Javascript 连续承诺的问题

Javascript 连续承诺的问题,javascript,es6-promise,Javascript,Es6 Promise,我正在努力正确理解承诺 我有一个sleep函数,如果我传递一个时间,它会延迟执行。我想按顺序执行所有事情 问题: 1: 然而,有时我的任务甚至在承诺完成之前就被叫来了。有人能告诉我代码中的错误在哪里吗? 2:我可以在这里使用async Wait而不是Promissions吗?如果是,怎么做 我的尝试: /*执行以下操作: 2-通过依次等待1s、2s和3s,创建顺序承诺。并显示每个承诺的结果。 3-通过并行等待1、2和3来创建并行承诺。当所有的承诺都实现时,展示结果。 4-创建混合承诺,依次等待

我正在努力正确理解承诺

我有一个sleep函数,如果我传递一个时间,它会延迟执行。我想按顺序执行所有事情

问题:

1: 然而,有时我的任务甚至在承诺完成之前就被叫来了。有人能告诉我代码中的错误在哪里吗?

2:我可以在这里使用async Wait而不是Promissions吗?如果是,怎么做

我的尝试:

/*执行以下操作:
2-通过依次等待1s、2s和3s,创建顺序承诺。并显示每个承诺的结果。
3-通过并行等待1、2和3来创建并行承诺。当所有的承诺都实现时,展示结果。
4-创建混合承诺,依次等待1s、2s,然后并行等待3s、4s、5s。
5-通过依次等待1、未定义和3来创建顺序承诺。抓住错误。
6-创建顺序承诺,通过等待5个不同的数字,以随机数作为输入。
*/
//睡眠需要时间并返回时间+1
常量睡眠=(时间)=>{
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
log(`Resolving:${time}+1`);
解决(时间+1);
},时间*1000);
});
}
//生成一个范围内的随机数。
常量随机数=(最小值=1,最大值=8)=>{
返回Math.floor(Math.random()*(max-min+1)+min);
} // -5~5
console.log(
睡眠(随机数())
.然后(sleep(randomNumber()))
.然后(sleep(randomNumber()))
.然后(sleep(randomNumber()))
.然后(sleep(randomNumber()))
。然后((e)=>{
console.log(“Done”,e);//在完成所有承诺后调用Done。
})

)
。然后
接受一个作为函数的参数,而不是
承诺
。换衣服

.then(sleep(randomNumber()))
s到

因此,函数被放入
Promise
链中,当前面的
解析时,将调用该链。否则,每个
睡眠(randomNumber())
将在承诺链创建后立即调用

/*执行以下操作:
2-通过依次等待1s、2s和3s,创建顺序承诺。并显示每个承诺的结果。
3-通过并行等待1、2和3来创建并行承诺。当所有的承诺都实现时,展示结果。
4-创建混合承诺,依次等待1s、2s,然后并行等待3s、4s、5s。
5-通过依次等待1、未定义和3来创建顺序承诺。抓住错误。
6-创建顺序承诺,通过等待5个不同的数字,以随机数作为输入。
*/
//睡眠需要时间并返回时间+1
常量睡眠=(时间)=>{
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
log(`Resolving:${time}+1`);
解决(时间+1);
},时间*1000);
});
}
//生成一个范围内的随机数。
常量随机数=(最小值=1,最大值=8)=>{
返回Math.floor(Math.random()*(max-min+1)+min);
} // -5~5
console.log(
睡眠(randomeNumber())
。然后(()=>sleep(randomeNumber()))
。然后(()=>sleep(randomeNumber()))
。然后(()=>sleep(randomeNumber()))
。然后(()=>sleep(randomeNumber()))
。然后((e)=>{
console.log(“Done”,e);//在完成所有承诺后调用Done。
})

)
太棒了!!非常感谢。第一行解释了这一切。如果我想并行运行所有内容,该怎么办?请参阅编辑,使用
Promise.all
.then(() => sleep(randomNumber)