猫史档案馆


【岛3教程】如何做出等待的效果

用户:蓝矮爱乐蓝矮爱乐查看:0 回复:1 评论:0 创建时间:2022-04-26T19:00:16


/*直接await sleep(等待的毫秒)不就行了吗
对了,还要放在异步函数(async function)里面
接下来弄个玩家进入游戏后每隔1秒就会变大小的*/
world.onPlayerJoin(async function/*这就是async function*/({entity})=>{
    /*如果把await指令放在同步函数里面,你就会得到一个语法错误:
    await is only valid in async function*/
    while(true){
        await sleep(1000)
        entity['player']['scale']=Math.random()
    }
})

如果想要在其他的JavaScript的程序软件里面用await sleep呢?

ReferenceError: sleep is not defined

所以,等待的话只能用

setTimeout(function(){
    //等待1000毫秒后,执行这里面的代码
},1000)

setTimeout是个好方法,但是要多次等待的话,那就不知道有多麻烦了

那么,请你新认识一个东东,它的名字叫Promise

/*Promise是创建一个异步的方法
用new Promise()就可以调用
*/
new Promise((resolve,reject)=>{})
/*Promise这个函数有两个参数(resolve和reject)
    resolve()用于完成这个异步,并执行下一个代码
    reject()用于在异步执行失败时发出报错
那么,就可以这样用:*/
function sleep(timeMS){//由于等待事件要很长的一段代码,所以用函数来缩短,每次调用时都会执行
    return new Promise((resolve)=>{//返回新建一个异步
        setTimeout(()=>{//等待timeMS秒后,结束这个异步
            resolve()
        },timeMS)
    })
};
(async()=>{//10秒倒数计时器
    for(var c=0;c<10;c++){
        console.log(10-c);
        await sleep(1000)//调用sleep函数,等待1秒
    }
})()


回复

上一页1 页 / 共 1下一页
yee089yee089

好氵(bushi)

为什么不能直接定义async的函数呢()反正我一个可以直接往代码里传一个代码对象(是不是这么说的)吧

点赞1


评论