#javascript
Вопрос:
Здравствуйте, у меня есть этот массив
const arrayId= [{123, 234, 235}, {345, 456, 564, 560, 653}, {455, 444, 678, 567, 789, 542}]
Я не хочу замыкаться внутри каждого объекта, чтобы применить каждый элемент к моей конечной точке, чтобы иметь возможность извлекать данные каждого элемента
я делаю это, но это не работает
await Promise.all(arrayId.map(async (id) => {
const contents=await myEndpoint.data(app, id);
console.log(contents)
}))
Пожалуйста, помогите мне
Комментарии:
1. Вы хотите что-то сделать с каждой операцией или подождать, пока каждая операция завершится, а затем что-то сделать?
2. Я хотел бы сравнить данные каждого объекта, чтобы восстановить минимальное значение
3. Каков ваш ожидаемый результат?
4. Кстати, вы не можете использовать
{123, 234, 235}
его недействительно… Объект должен быть паройkey-value
5. Кроме того, что это
myEndpoint.data()
? Возвращает ли это обещание ? Вероятно, вам следует включить этот код в свой вопрос.
Ответ №1:
Обычно map
используется в таких ситуациях для создания массива обещаний. Затем вы можете использовать Promise.all
для ожидания разрешения/отклонения этих обещаний. Затем вы можете использовать Math.min
возвращенные данные, чтобы найти минимальное значение.
В этом примере используется набор данных, который соответствует вашему (в основном), и вызов fakeFetch, который возвращает обещание рандомизированных значений на основе идентификаторов в каждом массиве. Он регистрирует окончательные массивы и минимальные значения каждого из них.
// Accept an array and for each value create a new
// random value. The updated array is sent back as the response
function fakeFetch(arr) {
const rnd = Math.round(Math.random() * (10 - 1) 1);
return new Promise(res => {
const updatedArr = arr.map(el => el * rnd);
setTimeout(() => res(updatedArr), 2000);
});
}
// Fetch some data using the array
const myEndpoint = {
data(arr) { return fakeFetch(arr); }
}
const arr = [[1, 4, 9], [ 2, 10, 4], [ 13, 4, 100 ]];
async function example(arr) {
// Build an array of promises using the fetch call
const promises = arr.map(arr => myEndpoint.data(arr));
// Wait for the response
const data = await Promise.all(promises);
// `map` over the arrays to create an array of
// minimum values
const mins = data.map(arr => Math.min(...arr));
console.log(data, mins);
}
example(arr);