让我们假设我们有一个函数可以解决如下所示的承诺:
function timeoutPromise(interval) {
return new Promise((resolve, reject) => {
setTimeout(function(){
resolve("done");
}, interval);
});
};
让我们假设我们以两种不同的方式在异步函数中调用该函数;
慢速同步方式:
async function timeTest() {
await timeoutPromise(3000);
await timeoutPromise(3000);
await timeoutPromise(3000);
}
这里我们只是直接等待所有三个 timeoutPromise() 调用。随后的每个任务都被迫等待直到最后一个任务完成,这将导致总运行时间约为 9 秒。
和快速异步方式:
async function timeTest() {
const timeoutPromise1 = timeoutPromise(3000);
const timeoutPromise2 = timeoutPromise(3000);
const timeoutPromise3 = timeoutPromise(3000);
await timeoutPromise1;
await timeoutPromise2;
await timeoutPromise3;
}
在这里,我们将三个 Promise 对象存储在变量中,这会导致它们的关联进程全部同时运行。这将导致总运行时间约为 3 秒。
但问题是,为什么将 Promise 对象存储在变量中会导致相关进程同时运行?幕后发生了什么?
拉风的咖菲猫
相关分类