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