#node.js #express #async-await
#node.js #выразить #асинхронный-ожидание
Вопрос:
Я использую цикл for, и возврат происходит до завершения выполнения цикла. Я не могу использовать.Метод Map, потому что у меня есть некоторые промежуточные условия, и я хочу разорвать промежуточный цикл.
const getCompanies = async(searchURL,reqBody) => {
const html = await rp(baseURL searchURL);
businessMap = cheerio('a.business-name', html);
for(var i=0; i < businessMap.length; i ) {
linkNew = baseURL businessMap[i].attribs.href;
const innerHtml = await rp(linkNew);
..
...My Code with conditions here
.....
......
......
values.push( [a,b,c,d,e,f]);
}
return values
}
Комментарии:
1. Мой ответ помог вам решить проблему? если это так, пожалуйста, отметьте его как принятый, отметив V слева от него. Если нет, пожалуйста, дайте мне знать, и я постараюсь вам помочь.
2. Нет, это не помогло, извините
3. пожалуйста, добавьте весь код (где он говорит
My Code with conditions here
), чтобы мы могли вам помочь.
Ответ №1:
Я вижу здесь 2 варианта:
- У вас есть a
break
, который выполняется там, где указаноMy code with conditions here
. rp
не возвращает aPromise
.
Что касается второго варианта, вот краткий код, чтобы показать вам, что последняя строка асинхронной функции выполняется только тогда, когда все await
s завершены:
const delay = (ms) => {
return new Promise(r => {
setTimeout(r, ms);
console.log("delayed", ms);
});
}
const run = async () => {
for (var i = 0; i < 3; i ) {
await delay(1000);
}
console.log("finished");
}
run();