Я работаю над страницей закладок, мы получаем результаты закладок с идентификатором ресторана с закладкой.Затем я сопоставляю ответ и выдвигаю его как объекты в массив.
Я хочу разрешить весь законченный массив, чтобы потом можно было манипулировать данными.
Я создал функцию getData, которая выполняетзапрос к закладке API, в onSucces я вызываю функцию с именем mapResult, которая выглядит следующим образом:
mapResults(result: Array<any>, type: string): Promise<any> {
const promise = new Promise<any>((resolve, reject) => {
const requests = result.map((res, i) => {
this.getRestaurantById(res.RestaurantId).then(restaurant => {
const bookmarks = {
createdDate: res.CreatedDate,
restaurant: restaurant[0]
};
this.savedData[type].push(bookmarks);
});
});
Promise.all(requests).then((completed) => {
if(completed) {
console.log(completed)
resolve(this.savedData[type]);
}
})
});
return promise;
}
Где я подписываюсь, как это:
this.mapResults(result, type).then(data => {
console.log(data)
});
Но data
console.log - это не весь массив данных, он просто разрешит первый объект.
Почему функция Promis.all
не ожидает завершения карты?