ネストされた Promise を解明する
NodeJS でネットワーク コードを操作し、Promise を利用する場合、ネストされた Promise がよく発生します。この構造は必要な場合もありますが、コードが乱雑で読みにくくなる可能性もあります。よりクリーンで効率的なアプローチは、Promise をネストするのではなく連鎖させることです。
ネストされた Promise の問題
次の例を考えてみましょう:
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 を使用して、3 つの API リクエストを連続して作成します。正しく機能しますが、視覚的に乱雑でわかりにくいです。
代わりに Promise を連鎖させる
Promise をネストする代わりに連鎖させるには、 then コールバックを変更して次のコールバックを返します。 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 を返し、事実上「連鎖」します。一緒に。各 Promise から解決された値は、シーケンス内の次の then コールバックの引数として使用できます。
この手法を採用すると、特に複数の API リクエストを処理する場合に、コードの読みやすさと保守性が向上します。 .
以上がNode.js でネストされた Promise を回避し、コードの可読性を向上するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。