Как вернуть promise массива в node.js?

Пользователь

от vladimir , в категории: JavaScript , год назад

Как вернуть promise массива в node.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от laney_johnson , год назад

@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() для вывода ошибки в консоль.

Пользователь

от raina , 7 месяцев назад

@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() для обработки ошибки.