У меня есть асинхронная функция внутри, которая использует forEach и promise.all. Мой вопрос заключается в том, как сделать остановку функции до тех пор, пока одно из значений в forEach не будет полностью отображено, а затем перейти к следующему.

sentingMailtoOneRestauarnt это большая функция, и теперь я получаю только частичные значения из этого, потому что следующее значение в forEach вызывается до завершения первого.

exports.handler = async () ={amp}gt; { return fetchAllConnectedAcccounts(null).then((response) ={amp}gt; { var promises_array = [] response.forEach((data) ={amp}gt; { if (data) { var promise = sentingMailtoOneRestauarnt(data, yesterday).then((resp)={amp}gt;{ promises_array.push(promise); }) } }) return Promise.all(promises_array).then((result) ={amp}gt; { return result; }) }).catch((err) ={amp}gt; { console.log(err) }); 

}

DRS

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

Из кода, похоже, вы уже используете async здесь. Пропустить обещания —

 const responses = await fetchAllConnectedAcccounts(null); const results = []; for (const response of responses){ if (response){ results.push(await sentingMailtoOneRestauarnt(response, yesterday)); } } // do whatever with results... 

В настоящее время ваш массив полон разрешенных обещаний (вы нажимаете на него только после разрешения обещания).

 exports.handler = async () ={amp}gt; { return fetchAllConnectedAcccounts(null).then((response) ={amp}gt; { var promises_array = [] response.forEach((data) ={amp}gt; { if (data) { var promise = sentingMailtoOneRestauarnt(data, yesterday); promises_array.push(promise); // push to array before promise is resolved } }) return Promise.all(promises_array); // wait for resolving here /*.then((result) ={amp}gt; { return result; })*/ // unnecessary }).catch((err) ={amp}gt; { console.log(err) });