【发布时间】:2017-03-03 20:18:46
【问题描述】:
我正在创建一个函数来延迟加载图像,当需要它们时(使用分页将大数据集分成更小的块)。
问题是promise嵌套在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 -
return Promise.all([item.imagedata]);似乎毫无意义。我认为您可以将其减少到return item.imagedata;
标签: arrays image promise paging es6-promise