Понимание параллельности промисов в Node.JS
Правильно ли я понимаю, что эти две функции эквивалентны друг другу по времени выполнения (при прочих равных):
const func = async () => {
try {
const some = await promiseFunc();
console.log(some);
} catch (err) {
console.error(err);
}
};
и
const func = () => {
promiseFunc()
.then((some) => {
console.log(some);
})
.catch((err) => {
console.error(err);
});
};
И правильно ли я понимаю, что эта функция будет работать быстрее:
const func = async () => {
try {
const someOne = promiseFuncOne();
const someTwo = promiseFuncTwo();
const someThree = promiseFuncThree();
const parallel = await Promise.all([someOne, someTwo, someThree]);
console.log(parallel[0], parallel[1], parallel[2]);
} catch (err) {
console.error(err);
}
};
чем эта:
const func = async () => {
try {
const someOne = await promiseFuncOne();
const someTwo = await promiseFuncTwo();
const someThree = await promiseFuncThree();
console.log(someOne, someTwo, someThree);
} catch (err) {
console.error(err);
}
};
за счет того, что в первой функции все три промиса будут выполняться параллельно и конечное время выполнения будет равно времени выполнения самого медленного промиса. Вторая же функция будет работать дольше, потому, что при каждом await функция будет ждать окончания выполнения промиса.
Все ли я правильно понимаю или где-то напутал?