我正在尝试学习如何用 JS 链式承诺。我在这里看到了代码,他们使用 forloop JavaScript ES6 Promise for Loop 来完成它。我发现它很酷,并决定进行一些小的调整来尝试一下。但它没有奏效。如果您能告诉我为什么这不起作用,我将非常感激这是我的代码://Goal: print from 0-10 in order at random timesfunction test() { for (let i = 0, p = Promise.resolve(); i < 10; i++) { p = p.then(createPromise(i)); }}function createPromise(i) { return new Promise(resolve => setTimeout(function () { console.log(i); resolve(); }, Math.random() * 1000) )}test();这是我的代码的输出9178063254
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
.then需要回调,而不是 Promise - 目前,您在循环内createPromise(i) 立即调用。创建一个在调用时返回Promise 的函数:
p = p.then(() => createPromise(i));
function test() {
for (let i = 0, p = Promise.resolve(); i < 10; i++) {
p = p.then(() => createPromise(i));
}
}
function createPromise(i) {
return new Promise(resolve =>
setTimeout(function () {
console.log(i);
resolve();
}, Math.random() * 1000)
)
}
test();
添加回答
举报
0/150
提交
取消