const p1 = new Promise((re,rj)=>{
setTimeout(()=>{
re("This is 10 sec promise");
},10000);
});
const p2 = new Promise((re,rj)=>{
setTimeout(()=>{
re("This is second promise");
});
});
async function handlePromise(){
console.log("This is above all promise");
const d = await p1;
console.log("Iam after p1");
const c = await p2;
console.log("Iam after the p2");
}
handlePromise();
在这段代码中,为什么我在 10 秒后才得到 p2 和 console.log 的结果,它应该是 15,因为在异步函数中,当 p1 解析时,它将是 10 秒,然后当 js 遇到第二个承诺时,它应该采取还有 5 秒。
异步函数内的所有等待承诺是否同时注册,因为这只是解释此行为的唯一原因。
查看所有代码将在10秒后执行
传入
Promise
构造函数的回调会立即执行。所以你的 setTimeout
也会立即执行。将您的 Promise 转换为函数并按需调用它们:
const p1 = () => new Promise((re,rj)=>{
setTimeout(()=>{
re("This is 10 sec promise");
},10000);
});
const p2 = () => new Promise((re,rj)=>{
setTimeout(()=>{
re("This is second promise");
});
});
async function handlePromise(){
console.log("This is above all promise");
const d = await p1();
console.log("Iam after p1");
const c = await p2();
console.log("Iam after the p2");
}
handlePromise();