Я создаю веб-приложение node.js и express, которое использует модуль извлечения узла. Ниже приведен фрагмент ключевых частей моего кода
fetchGeoLocation(geoApiKey)
.then(coordinates => {
data x = getSomeData(); //returns data needed for next fetch API call.
return fetchWithRetry(//various parameters provided by var data...);
}
.then(powerData =>{
///continue on...
}
Для некоторого контекста: fetchWithRetry получает область в качестве параметра и выдает электрическую мощность. Это рекурсивно, потому что выходная мощность должна быть ниже определенного порога. Если оно ниже такого порогового значения, возвращается значение, иначе fetchWithRetry () вызывается снова с измененными введенными параметрами.
Это важные части моей функции fetchWithRetry ():
function fetchWithRetry(params...){
return fetch(///powerData)
.then(res => res.json())
.then(powerData => {
if( //powerData isn't good){
fetchWithRetry(change params...)
}
return powerData;
TL; DR -> Следующая проблема является точной:
Последний обратный вызов, powerData, не ожидает результата fetchWithRetry и его потенциала следующие рекурсивные вызовы. Я проверил, что fetchWithRetry работает правильно, но рекурсивные вызовы выполняются ПОСЛЕ последнего вызова .then (), поэтому он не ждет его.
Я попытался использовать async / await для координат и fetchWithRetry но последний .then () продолжает не ждать рекурсивного вызова fini sh.