eka*_*nsh 2 javascript asynchronous
我正在尝试创建一个显示数字 1 到 10 并延迟打印每个数字的函数。比如1秒后打印1,2秒后打印2,最多10。还必须在数字打印之前和之后打印开始和结束。
尝试创建一个承诺并使用异步等待来实现这一点。但是无法在函数之后正确打印“结束”。
当尝试解决承诺时,它会在 settimout 操作之前得到解决。
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();
Run Code Online (Sandbox Code Playgroud)
Promise 并没有解决,即两者都不是resolving,rejecting所以它会保持在pending状态。i你所要做的就是在达到最终计数后兑现承诺
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();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |