Можно ли дождаться завершения цикла асинхронных операций внутри синхронной функции с использованием TypeScript? - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть цикл foreach, который выполняет ряд асинхронных функций, которые получают данные и отображают таблицу. Я хотел бы вызвать вторую функцию после всех асинхронных. вызовы в цикле foreach завершены, и таблица обработана.

1 Ответ

0 голосов
/ 10 сентября 2018

Да, вы можете. Выполняйте каждое действие, которое вы называете Обещанием. Сохраните все эти обещания в виде массива, затем вызовите Promise.all

const promises:Promise<{}>[] = [];
myWhatever.forEach(
    item => {
         const promise = new Promise<{}>(
             (resolve, reject) => {
                 // Do something which ends up with resolve getting called
                 // at some point
             }
         );
         promises.push(promise);
    }
);
Promise.all(promises)
   .then(
      () => {
          // Perform your post render tasks here
      }
    );

Вы можете упростить это, заменив forEach на map

const promises = myWhatever.map(
    item =>
        new Promise<{}>(
             (resolve, reject) => {
                 // Do something which ends up with resolve getting called
                 // at some point
             }
        )
);
Promise.all(promises)
   .then(
      () => {
          // Perform your post render tasks here
      }
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...