прерывается выполнения скрипта, без ошибки

Есть несколько асинхронных функций которые вызываются вот так:

(async () => {
  console.log('1')

  await promisify(updateOrdersToAccepted)()
  console.log('2')

  await promisify(updateTo10)()
  console.log('3')

  await promisify(addOrdersToGoogleSheets)([4, 5, 6, 7, 8, 9, 10]);
  await promisify(ordersQuantity)('DB_LOGISTIC_STATISTICS')
  await promisify(ordersQuantity)('DB_LOGISTIC_STAT2')

})()

первая функция отрабатывает без ошибок и завершается.Все, дальше выполнения не идет.
В логах есть только 1.
Мб я что-то упускаю?


Ответы (3 шт):

Автор решения: Aziz Umarov

Думаю как-то так.

function promisify(func) {
  return new Promise((res, err) => {
    setTimeout(() => {
    res(func);
  }, 1000);
  });
}

function updateOrdersToAccepted(){
  console.log("call updateOrdersToAccepted");
}

function updateTo10() {
  console.log("call updateTo10");
}

function addOrdersToGoogleSheets(array){
  console.log(`call addOrdersToGoogleSheets with params ${[...array]}`);
}


function ordersQuantity(param){
  console.log(`call ordersQuantity with params ${param}`);
}


(async () => {
  console.log('1');
try {
  (await promisify(updateOrdersToAccepted))();
  console.log('2');

  (await promisify(updateTo10))();
  console.log('3');

  (await promisify(addOrdersToGoogleSheets))([4, 5, 6, 7, 8, 9, 10]);
  (await promisify(ordersQuantity))('DB_LOGISTIC_STATISTICS');
  (await promisify(ordersQuantity))('DB_LOGISTIC_STAT2');
  }
  catch (e){
    console.log(e);
  }
})()

У вас ошибка в попытке вызвать результат промиса когда он ещё не пришел.

await promisify(ordersQuantity)('DB_LOGISTIC_STATISTICS');

а нужно обернуть результат и потом вызвать.

(await promisify(ordersQuantity))('DB_LOGISTIC_STATISTICS');

В моём примере promisify это моя функция чисто для примера.

→ Ссылка
Автор решения: Эмиль Кулуев

Вообщем нашел решение сам. В функциях добавил параметр next и в конце функции вызывал его,заработало как надо

→ Ссылка
Автор решения: vp_arth

// Вот так (грубо говоря) работает promisify
function promisify(fn) {
  return (...args) => new Promise((resolve, reject) => {
    fn(...args, (err, result) => {
      if (err) return reject(err);
      resolve(result);
    });
  });
}

// Промисифицируемая функция должна принимать (err, result) => {} функцию последним аргументом
function someFunc(a, next) {
  setTimeout(() => next(null, a), 100);
}

const someFuncPromisified = promisify(someFunc);

(async () => {
  console.log(1);
  const res = await someFuncPromisified(42);
  console.log(res);
  console.log(2);
})();

→ Ссылка