【发布时间】:2019-05-28 10:34:02
【问题描述】:
我正在尝试使用 JavaScript 中的 Promises 实现睡眠功能。
function sleep(ms) {
var begin = new Promise(resolve => {
console.log("Sleep function called for " + ms + " ms\n")
});
return new Promise(resolve => setTimeout(resolve, ms))
.then(() => console.log("Sleep done!" ));
}
它有效。但是,
function sleep(ms) {
var begin = new Promise(resolve => {
console.log("Sleep function called for " + ms + " ms\n")
});
return begin.then(resolve => setTimeout(resolve, ms))
.then(() => console.log("Sleep done!" ));
}
没有,而是挂起!是什么赋予了?
更新:我真正想做的是把它写成一系列的 Promise 调用。
function sleep(ms) {
var beginAnnounce = new Promise(...);
var goSleep = new Promise (...);
var endAnnounce = new Promise...);
return beginAnnounce.then(goSleep).then(endAnnounce());
}
【问题讨论】:
-
beginPromise 永远不会解决,因为你永远不会调用它的resolve方法 -
那么,我必须在第二个代码 sn-p 中进行哪些更改?
-
"...和可能的竞争条件" - 想解释一下这个假设吗?
-
调用
begin的初始Promise中构造的resolve参数 -
请帮助提供实际代码。
标签: javascript promise sleep chaining