以下のコードは、実行後に配列に何も追加しません。別のものを含めることでデータを解決し、スコープ外で使用できるようになると思いました。
function getImgUrls(searchItems) {
searchItems.forEach(currentItem => {
let image;
imgClient.search(currentItem, options).
then(images => {
return images[0].url;
}).then(finalResult => {
console.log(finalResult);
pushToArray(finalResult);
})
.catch(error => {console.log(error); });
});
}
あなたにはたくさんの約束があるので、それらがすべていつ完了するかを知る必要があります。ここで最も簡単な方法は、を使用することPromise.all()
です。そして、あなたは約束の配列を蓄積しようとしているので、.map()
代わりに使用するのが最善です.forEach()
:
function getImgUrls(searchItems) {
return Promise.all(searchItems.map(currentItem => {
return imgClient.search(currentItem, options).then(images => {
// make the url be the resolved value of the promise
return images[0].url;
});
}));
}
getImgUrls(...).then(urls => {
console.log(urls); // final array of urls
}).catch(err => {
console.log(err);
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加