以下の私のコードによれば、最終的にすべてのデータを連鎖していますが、最終的な関数では召喚者にアクセスできない.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);
});
すべての約束関数で約束を返すことを確認するだけです – Elevant
より正確には、連鎖しているときに、解決された値として正しいデータ形状を渡す必要があります。召喚者はgameDataの小道具である必要がありますあなたの場合。 – Xlee
@Xlee:「データシェイプ」とはどういう意味ですか? 'then'コールバックから必要なものを返すことができます。 '.then(function(){return 42;})'はうまくいきます。もしあなたが返すものが可能であれば、その時の約束は、その返済可能性に従属します。あなたが返すものが返品不可能な場合、約束された 'then'返品はあなたが返却した値で自動的に解決されます。 .then(function(){Promise.resolve(x);}) '(あなたの今削除された提案)は' .then(function(){return x;}) 'と書くのにちょうど長い方法です。 –