Чтобы говорить о возврате, ваш fetchRepeat
должен вернуть обещание. Это не так, возвращая undefined
был результат. Последняя then
также не возвращала значение рекурсии и, следовательно, также разрешалась до undefined
.
Вот рабочая версия:
function fetchRepeat(id) {
// return the promise
return fetch(`https://api.priceapi.com/v2/jobs/${id}/download.json?token=${priceapisecret.secret}`)
.then(response => response.json())
.then(({ status, results: [{ content: { name: title, price } }] = [{ content: {} }] }) =>
(status === 'finished' ? { title, price } : fetchRepeat(id))); // return result of recursion
}
Теперь я позволю ESLint обрабатывать форматирование, и, поскольку я использую airbnb, он предпочитает деструктуризацию. Ошибка в последнем then
была очевидна, так как ELSint жаловался на последовательный возврат. Я призываю вас использовать линтер и IDE, которые применяют стиль кодирования, чтобы уменьшить количество ошибок в вашем коде и облегчить чтение для других.