如何在返回promise时解析一个值?

时间:2016-06-21 14:02:31

标签: javascript promise

我在循环中调用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);
        });

1 个答案:

答案 0 :(得分:1)

您的.then正在返回Promise.all(promises)创建的承诺,因此它将获得所有承诺的结果。您只需要另一个.then来返回您想要的内容。

}).then(function () {
  return Promise.all(promises);
}).then(function () {
  return assetIds;
});