В Node.js у меня есть разрешение Promise.all (массив) с результирующим значением, которое мне нужно объединить с результатами другого вызова асинхронной функции. У меня возникают проблемы с получением результатов этой второй функции, поскольку она разрешается позже, чем promise.all. Я мог бы добавить его в Promise.all, но это разрушило бы мой алгоритм. Есть ли способ получить эти значения за пределами их разрешений, чтобы я мог изменять их статически? Могу ли я создать контейнер, который ждет их результатов?
Если быть более точным, я читаю из базы данных Firebase в реальном времени, которая опрашивает данные API. Мне нужно запустить алгоритм на этих данных и сохранить его в архиве MongoDB. Но архив открывается асинхронно, и я не могу открыть его до разрешения моих результатов (которые нужно записать).
Пример:
module.exports = {
news: async function getNews() {
try {
const response = await axios.get('https://cryptopanic.com/api/posts/?auth_token=518dacbc2f54788fcbd9e182521851725a09b4fa&public=true');
//console.log(response.data.results);
var news = [];
response.data.results.forEach((results) => {
news.push(results.title);
news.push(results.published_at);
news.push(results.url);
});
console.log(news);
return news;
} catch (error) {
console.error(error);
}
},
coins: async function resolution() {
await Promise.all(firebasePromise).then((values) => {
//code
return value
}
}
Я пробовал первое решение, и оно работает для первой записи, но, возможно, я неправильно пишу свою асинхронную функцию во втором экспорте, потому что она возвращает неопределенное значение.