gpt4 book ai didi

javascript - 如何处理 javascript 中的异步调用 - 使用 promises 延迟打印数字

转载 作者:行者123 更新时间:2023-12-05 08:45:09 25 4
gpt4 key购买 nike

我正在尝试创建一个显示数字 1 到 10 并延迟打印每个数字的函数。比如1秒后打印1,2秒后打印2,直到10。还必须在数字打印之前和之后打印开始和结束。

尝试创建一个 promise 并使用异步等待来实现这一点。但是无法在函数后正确打印“结束”。

当尝试解析 promise 时,它​​会在设置超时操作之前被解析。

async function disp(){
console.log("start")
await promise();
console.log("end")
}

function promise(){
return new Promise((resolve, reject) => {
for(let i=1;i<10;i++){
setTimeout(() => {
console.log(i);
}, i*1000);
}
//resolve();
})
}


disp();

最佳答案

Promise 没有解决,即它既不是 resolving 也不是 rejecting 所以它会保持在 pending 状态。您所要做的就是在 i 达到最终计数后结算 promise

async function disp() {
console.log('start');
await promise();
console.log('end');
}

function promise() {
return new Promise((resolve, reject) => {
const upto = 10;
for (let i = 1; i <= upto; i++) {
setTimeout(() => {
console.log(i);
if (i === upto) resolve(); // CHANGE
}, i * 1000);
}
});
}

disp();

关于javascript - 如何处理 javascript 中的异步调用 - 使用 promises 延迟打印数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73994800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com