Никогда не следует вызывать функцию, возвращающую обещание, например getPictureR
, из асинхронного (не обещающего) обратного вызова или внутри конструктора new Promise
.Вы также никогда не решали new Promise
.Вы ищете
return new Promise((resolve, reject) => {
setTimeout(resolve, 1 * 1000/2);
}).then(() => {
return getPictureR(); // do the promise call in a `then` callback to properly chain it
})
Но так как вы используете async
/ await
, вам не нужна рекурсивная функция и цепочка then
в любом случае.Также вы можете выделить обертку setTimeout
в обещании в отдельной вспомогательной функции:
function delay(t) {
return new Promise(resolve => setTimeout(resolve, t));
}
async function somefunction() {
while (true)
/* some code */
const prev = $('.actions > .prev', html);
if (prev.length) {
older = prev[0].attribs.href;
} else {
console.log('return');
break;
}
/* some code */
await delay(1 * 1000/2);
// ^^^^^^^^^^^
}
console.log('getPicture done');
}