Promise.all()方法无法解析为某个值

时间:2016-03-25 15:15:42

标签: javascript promise ecmascript-6 es6-promise

以下代码解析为最后一个处理程序中的Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}

虽然使用promises将数组记录到控制台时,每个都具有状态resolved并且所有请求都已完成。

MusicService
  .getArtists()
  .then((res) => {
     let arr = res.filter((a) => {
        return a.id.length;
     });
     return Promise.all(arr.map(function(a) {
        return fetch(`//service.com/api/artist/${a.id}`);
     }));
   })
   .then((res) => {
      console.log(res);
   });

那么我错过了什么让这个工作?

1 个答案:

答案 0 :(得分:1)

FWIW,这可以简化为:

MusicService
  .getArtists()
  .then(res => Promise.all(
    res
      .filter(a => a.id.length > 0)
      .map(a => fetch(`//service.com/api/artist/${a.id}`))
    )
  )
  .then(res => {
    console.log(res);
  });

在上一次回调中,res会是一系列fetch()结果,但它不能是其他任何内容。