为了账号安全,请及时绑定邮箱和手机立即绑定

使用 forloop 链接 Promise JS

使用 forloop 链接 Promise JS

慕雪6442864 2023-11-02 16:56:17
我正在尝试学习如何用 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();


查看完整回答
反对 回复 2023-11-02
  • 1 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信