fetch.then甚至在兑现承诺的情况下也返回承诺

时间:2020-08-02 16:53:01

标签: javascript asynchronous fetch-api

我正在对Codecademy中用于开发的顶点项目的Spotify API进行查询,但这根本不是涉及React的问题,而仅仅是涉及JavaScript。 (我是一个学习者,但是我的网络搜索仍然让我完全迷失了)

我具有如下搜索功能:

  search(searchTerm, _token) {
    let tracks = {};
    const searchTerms = [
      'type=track',
      `q=${searchTerm}`
    ];
    const searchUrl = searchEndpoint + '?' + searchTerms.join('&');
    return fetch(searchUrl, {
      headers: {
        Authorization: 'Bearer ' + _token
      }
    })
    .then((response) => {
      return response.json()
      ;
    })
    .then((jsonResponse) => {
      return jsonResponse.tracks.items.map((track) => {
        const tracksObj = {
          id: track.id,
          name: track.name,
          artist: track.artists[0].name,
          album: track.album.name,
          uri: track.uri
        };
        return  tracksObj;
      });
    });
  }
};

请求发送得很好,我什至能够提取数据。但是return语句是一个未决的Promise,但是它具有已实现的值。

当我传递“这一定是地方”和有效的访问令牌并记录函数调用时,结果如下:

console for fulfilled promise

现在,如果我在最后一次调用中更改为记录map函数,它将准确记录我要执行的操作。这是代码和日志:

    .then((jsonResponse) => {
      console.log(jsonResponse.tracks.items.map((track) => {
        const tracksObj = {
          id: track.id,
          name: track.name,
          artist: track.artists[0].name,
          album: track.album.name,
          uri: track.uri
        };
        return  tracksObj;
      }));
    });

Logging response map

那么...我该如何从return语句中获取值,而不仅仅是promise?

致谢

0 个答案:

没有答案