ghs*_*hin 2 javascript asynchronous settimeout promise async-await
给出以下代码:
function timer1(){
return new Promise(()=>{
setTimeout(() => {
console.log("1...");
}, 1000);
})
}
function timer2(){
return new Promise(()=>{
setTimeout(() => {
console.log("2...");
}, 2000);
})
}
function timer3(){
return new Promise(()=>{
setTimeout(() => {
console.log("3...");
}, 3000);
})
}
async function timers(){
await timer3();
await timer2();
await timer1();
}
timers();
Run Code Online (Sandbox Code Playgroud)
输出是:
(After 3 seconds..)
3...
Run Code Online (Sandbox Code Playgroud)
我想得到这个结果:
(After 3 seconds..)
3...
(After 2 seconds..)
2...
(After 1 seconds..)
1...
Run Code Online (Sandbox Code Playgroud)
为什么只打印了一个(3...)?
我想把这三张都打印出来。
小智 6
您需要在执行 setTimout 后解决承诺
function timer1() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("1...");
resolve();
}, 1000);
});
}
function timer2() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("2...");
resolve();
}, 2000);
});
}
function timer3() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("3...");
resolve();
}, 3000);
});
}
async function timers() {
await timer3();
console.log("(After 3 seconds..)");
await timer2();
console.log("(After 2 seconds..)");
await timer1();
console.log("(After 1 seconds..)");
}
timers();
Run Code Online (Sandbox Code Playgroud)