使用承诺创建延迟承诺

时间:2021-03-22 15:34:52

标签: javascript

嘿伙计们,我有一个 js 承诺问题,但它给了我错误

function delay(n) {
    return new Promise((resolve) => setTimeout(resolve, n*1000));
}

这应该说现在是 2 秒后,然后现在是 1.5 秒后,但它说

<块引用>

现在是未定义的
现在以后未定义

delay(2)
    .then(seconds => console.log(`It is now ${seconds} later`))
    .then(() => delay(1.5))
    .then(seconds => console.log(`It is now ${seconds} later`));

2 个答案:

答案 0 :(得分:0)

您没有包含解析值;将 setTimeout(resolve 更改为 setTimeout(function() {resolve(n);}

答案 1 :(得分:-1)

setTimeout 接受多个参数;

setTimeout(function, milliseconds, param1, param2, ...)

因此,在将第二个 setTimeout 参数设置为要等待的毫秒数后,您可以传递任何其他参数;

所以改变

setTimeout(resolve, n*1000)

setTimeout(resolve, n*1000, n)

function delay(n) {
    return new Promise((resolve) => setTimeout(resolve, n*1000, n));
}
delay(2)
    .then(seconds => console.log(`It is now ${seconds} seconds later`))
    .then(() => delay(5))
    .then(seconds => console.log(`It is now ${seconds} seconds later`));