根据我下面的代码,我将所有数据链接到希望将数据呈现到视图的末尾,但是使用.catch时,我发现在最终功能中无法使用召唤者。

getSummonerData(req.params.playerName)
.then(function(summoner) {
  return getMatchIds(summoner[0].id);
})
.then(function(matchIds) {
  return getGameData(matchIds);
})
.then(function(gameData) {
  res.render('profile', {player:summoner, games:gameData});
})
.catch(function(e) {
  console.log(e);
});

最佳答案

在您的代码中,只有包含对summoner的调用的then回调才能访问getMatchIds,而在其他地方则无法访问。为了以后可以访问,您必须要么1)从该then回调连同游戏数据一起返回它,要么2)将需要它的then回调嵌套在该回调中。

后者可能是更容易的一种:

getSummonerData(req.params.playerName)
.then(function(summoner) {
  return getMatchIds(summoner[0].id)
    .then(function(matchIds) {
      return getGameData(matchIds);
    })
    .then(function(gameData) {
      res.render('profile', {player:summoner, games:gameData});
    });
})
.catch(function(e) {
  console.log(e);
});

09-27 21:58