簡體   English   中英

如何在數組中的諾言中存儲數據(JavaScript)?

[英]How do I store data inside a promise in an array(JavaScript)?

完成后,下面的代碼不會向數組添加任何內容。 我認為如果再添加另一個,則可以解析數據並允許我在范圍外使用它。

 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() 並且,由於您要累積一個.forEach()數組,因此最好使用.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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM