ループがforeach
のループごとに非同期に配置されている配列を返そうとしています。しかし、私が帰ってくると、私はundefined
しか得られません。forループ内で非同期要求によってデータが取り込まれた後に配列を返すことができません
var navigateAndFetchPages = function (data) {
var countryPages = [];
data.forEach(function (val) {
Rq(val.esomar_url)
.then(function (data) {
var $ = cheerio.load(data),
pages_elem = $('.mt0.mb0-5.pt0').find('a').not('.active');
countryPages.push({country_name: val.country_name, links: pages_elem});
})
});
return countryPages;
};
var scraper = {
extract: function (dir) {
return landingPage(dir)
.then(function (countries) {
return navigateAndFetchPages(countries)
})
.then(function (p) {
p()
})
.catch();
}
};
_ "私が戻ったとき、私は' undefined'しか得られません "_値はどこで' navigateAndFetchPages'から返されましたか? – guest271314
申し訳ありませんが、戻り値を追加しました。そして、非同期procが完了する前に値が返されていることがわかります。しかし、私はforeachブロック内に戻ることもできません..今私は何をするつもりです... – ChanX
Doそのような配列を直接返す必要があるか、または約束やコールバック関数を使用するようにコードを構造化できますか? (「通常の非同期処理として」 – nnnnnn