NodeJS を使用してネットワーク リクエストと Promise を操作する場合、ネストされた Promise が発生する可能性があります。これは本質的に間違っているわけではありませんが、フローをより合理化するには、これらの Promise を連鎖させる必要がある場合があります。
提供されたコード スニペットは、複数のネストされた Promise を使用して API 呼び出しを行うシナリオを示しています。
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { boxViewerRequest('documents', {url: response.request.href}, 'POST') .then(function(response) { boxViewerRequest('sessions', {document_id: response.body.id}, 'POST') .then(function(response) { console.log(response); }); }); }); };
これらの Promise を連鎖させるには、簡単な変更が必要です。
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { return boxViewerRequest('documents', {url: response.request.href}, 'POST'); }) .then(function(response) { return boxViewerRequest('sessions', {document_id: response.body.id}, 'POST'); }) .then(function(response) { console.log(response); }); };
このアプローチの鍵は次のとおりです。各 then コールバックからの新しい Promise を return します:
.then(function(response) { return nextPromise; })
これにより、Promise チェーンが継続し、「内部」Promise の値で解決されることが保証されます。これらの約束を連鎖させることで、より読みやすく保守しやすいコードベースを作成できます。
以上がネットワークリクエストに対して NodeJS でネストされた Promise を効率化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。