在代码中实现“不要进入下一个承诺,直到前一个完成”的解决方法,可以使用Promise的链式调用和async/await。
使用Promise链式调用:
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
delay(1000)
.then(() => {
console.log('第一个承诺已完成');
return delay(2000);
})
.then(() => {
console.log('第二个承诺已完成');
return delay(3000);
})
.then(() => {
console.log('第三个承诺已完成');
})
.catch(error => {
console.error('发生错误:', error);
});
使用async/await:
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
async function execute() {
try {
await delay(1000);
console.log('第一个承诺已完成');
await delay(2000);
console.log('第二个承诺已完成');
await delay(3000);
console.log('第三个承诺已完成');
} catch (error) {
console.error('发生错误:', error);
}
}
execute();
这两种方法都能保证前一个承诺完成后再进入下一个承诺。