嘿伙计们,我有一个 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`));
答案 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`));