Angular: добавление результата ответа Http на карту - PullRequest
0 голосов
/ 04 июля 2018

Я отправляю одновременно несколько HTTP-вызовов из моего приложения Angular. Я хочу сохранить ответ HTTP-вызовов на карте.

data: Map<number, any> = new map<number,any>();

------------------------------------------------------

this.transactions.foreach((url)=>{
   this.http.post(url,{})
                         .map(data => this.data.set(txnNumber, data))
})

Теперь, поскольку HTTP-запросы отправляются одновременно и есть вероятность коллизии с точки зрения поиска и использования Map, он переписал бы его. Как мы можем синхронизировать это?

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете использовать почтовый оператор. Создайте массив с запросом, хранящим индекс транзакции, и выполните с zip, когда все транзакции завершат использование foreach для получения данных транзакций.

data: Map<number, any> = new map<number,any>();

------------------------------------------------------

const requests = this.transactions.foreach((url, index)=> {
    return this.http.post(url,{})).map((response) => ({txNumber: index, response})
});
Observable.zip(...requests)
    .map((results: any[]) => {
        results.foreach((data) => this.data.set(data.txNumber, data.response))
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...