イメージが必要なときにレイジーロードする機能を作成しています(大きなデータセットを小さなチャンクに分割するためのページ付けを使用)。配列内のネストされた約束を待っています
問題は約束が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);
});
}
、オリジナルではないが、' 'Promise.allを返す([item.imagedata]) – Bergi
をitems';'かなり無意味表示されます。私はあなたが 'return item.imagedata;'にそれを減らすことができると思う – Bergi