0
我正在創建一個函數,以在需要時使用延遲加載圖像(使用分頁將大數據集劃分爲更小的塊)。等待數組內部的嵌套承諾
問題是承諾嵌套在items[i].imagedata
。
返回的items
數組仍然包含Promise對象而不是加載的圖像。這可能是因爲我使用items.map()
,它創建了數組的副本。
function getItemImages(items, paging, cb) {
var Promise = promise.Promise;
console.log("START",items,paging);
for (var i=paging.pageOffset; i<Math.min(paging.pageOffset+paging.pageLimit,items.length); i++) {
if (!items[i].hasOwnProperty("imagedata")) {
console.log("LOADING "+i+":",items[i]);
items[i].imagedata = mongodbService.getItemImage(items[i]._id);
}
}
Promise.all(items.map((item) => {
return Promise.all([item.imagedata]);
})).then((images) => {
console.log("RESULT",paging, items);
cb(paging, items);
});
}
你想使用返回'images',而不是原來'items' – Bergi
'返回Promise.all([item.imagedata]);'出現相當沒有意義的。我想你可以把它減少到'return item.imagedata;' – Bergi