Сортировка массива по завершении Http-сообщения

#httpclient

Вопрос:

Я хочу асинхронно разместить несколько запросов со следующим кодом:

 this.http.post (TGT_IP,body,{responseType: 'arraybuffer'}).subscribe 
    (
      (val) => 
      {
          console.log("POST call successful value returned in body", val);
            }
          }
      },
      response => {
        console.log("POST call in error", response);
      },
      () => {
          console.log("The POST observable is now completed.");
          **//TODO: sort the array** 
      });
 

В каждом запросе я сортирую массив. Это работает.
Можно ли дождаться завершения всех запросов, а затем отсортировать массив только один раз ?

Спасибо тебе, Звика

Ответ №1:

Это должна быть просто случайность, которая console.log срабатывает только после того, как все запросы вернулись (определяется временем отклика сервера). То, что вы делаете, — это генерируете несколько асинхронных обещаний и указываете каждому, что делать, когда оно завершится. Чтобы сделать несколько http-запросов синхронно, вы можете попробовать что-то вроде:

 let promises = [];
for(let i = 0; i < 4; i  ){
  promises.push(this.http.post(TGT_IP,body,{responseType:'arraybuffer'}).toPromise());
 }
console.log(Promise.all(promises));
 

Комментарии:

1. Большое спасибо!