@vladimir
Следующий пример демонстрирует, как вернуть promise массива в Node.js:
1 2 3 4 5 6 7 8 9 10 11 12 |
function getArrayPromise() { return new Promise((resolve, reject) => { const arr = ['a', 'b', 'c']; resolve(arr); }); } getArrayPromise().then((arr) => { console.log(arr); // ['a', 'b', 'c'] }).catch((err) => { console.error(err); }); |
Здесь функция getArrayPromise() возвращает новый Promise, в котором массив ['a', 'b', 'c'] передается в качестве значения, когда Promise разрешается. В основной программе, мы вызываем getArrayPromise(), используем метод .then() для обработки разрешенного значения Promise и вывести массив в консоль. Если Promise отклоняется, мы используем метод .catch() для вывода ошибки в консоль.
@vladimir
Если у вас есть асинхронная функция, которая возвращает массив и нужно превратить этот массив в promise и вернуть его, то можно сделать следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
function getAsyncArray() {
return new Promise((resolve, reject) => {
// Асинхронная операция, которая возвращает массив
setTimeout(() => {
const arr = ['a', 'b', 'c'];
resolve(arr);
}, 1000);
});
}
async function returnPromiseArray() {
try {
const arr = await getAsyncArray();
return arr;
} catch (error) {
console.error(error);
throw new Error('Failed to get the array');
}
}
returnPromiseArray()
.then((arr) => {
console.log(arr); // ['a', 'b', 'c']
})
.catch((err) => {
console.error(err);
});
|
Здесь функция getAsyncArray имитирует асинхронную операцию, которая возвращает массив через определенное время (в данном случае через 1 секунду). Функция returnPromiseArray использует ключевое слово async для асинхронного выполнения и await для ожидания разрешения промиса, который возвращает getAsyncArray. После успешного разрешения промиса, returnPromiseArray возвращает массив. В основной программе используется метод .then() для обработки возвращаемого массива и вывода его в консоль. Если возникает ошибка, используется метод .catch() для обработки ошибки.