-2
我在一個循環中調用promise函數,我希望能夠返回所有的promise,並返回一個值(assetIds)。不過,我在調用函數(addToCollectionMap)後obj.assetIds是未定義的。如何在返回承諾時解決一個值?
function addToCollectionMap(client, json, collectionId) {
var promises = [];
var assetIds = [];
return new Promise(function (resolve) {
var list = JSON.parse(json)["list"];
list.forEach(function (asset) {
var assetId = asset["id"];
assetIds.push(assetId);
promises.push(setToCache(client, PREFIX + assetId, collectionId));
});
promises.push(resolve({assetIds: assetIds}));
}).then(function() {
return Promise.all(promises);
});
}
調用代碼:
return addToCollectionMap(client, jsonString, collectionId)
.then(function (obj) {
return setToCache(client, ASSET_MAP_PREFIX + collectionId, obj.assetIds);
});
我在您發佈的代碼中沒有看到任何'obj',您的意思是哪個值? – Bergi
@Bergi,我添加了調用代碼。 obj應該是addToCollectionMap的結果 – Nelson
不是,你使用了,然後讓它等於所有promise的結果。 –