根据我的下面的代码,我将所有数据链接到我希望将数据渲染到视图的结尾,但是使用.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);
});
答案 0 :(得分:1)
在您的代码中,只有包含您对/about
的呼叫的summoner
回调才能访问then
,而不是其他地方。要在以后可以访问,您必须1)从getMatchIds
回调中返回游戏数据,或者2)将需要它的then
回调嵌入里面< / em>那个回调。
后者可能更容易:
then
答案 1 :(得分:0)
我不确定你的意思是什么&#34;承诺功能&#34;。我猜你不知道&#39;然后&#39;并且&#39;赶上&#39;总是回报承诺。这就是你可以链接它们的原因。每个&#39;然后&#39;或者&#39;赶上&#39;是其前身返回的承诺的方法。这些受束缚的承诺后来被解决或拒绝,这取决于他们的前任发生了什么。
我假设你的最后一个功能&#39; res.render(...)&#39;返回您想要查看的值。然后承诺&#39;然后(渲染(...))&#39;将通过来自&#39; res.render(...)&#39;的价值得到解决。
这就是&#39;赶上&#39;将使用:您希望看到的价值已解决的承诺。但是&#39;赶上&#39;只有在被拒绝的情况下才会激活其功能。诺言。你需要一个&#39;然后&#39;代替。