Что я не могу понять, так это как запустить pre () и выполнить задачу, требующую много времени, при выполнении first (), second () и третьего (), но третий будет запущен после завершения pre?
Исходя из этого вопроса, я понимаю, что вы хотите:
- Выполнить
pre
, first
и second
одновременно
- Как только
pre
завершит выполнение, затем запустите third
Если это так, то следующий код сделает это:
var obj = {test: "Test"};
async function pre(obj) {console.log(`${pre.name} :`, obj); return obj;}
async function first(obj) {console.log(`${first.name} :`, obj)}
async function second(obj) {console.log(`${second.name} :`, obj)}
async function third(obj) {console.log(`${third.name} :`, obj)}
Promise.all([first(obj), second(obj), pre(obj).then(third)]);
Функция Promise.all()
принимает массив функций, которые возвращают обещание, и выполняет их параллельно. Обратите внимание на pre(obj).then(third)
. Это выполнит функцию pre
и после завершения выполнит функцию third
.