链接 Promise 以删除嵌套结构
使用异步操作时,Promise 提供了一种便捷的方法来处理回调并保持代码可读性。然而,嵌套的 Promise 很快就会使代码变得复杂且难以理解。本文讨论如何删除嵌套的 Promise 并将它们链接起来以提高清晰度。
方法
要删除嵌套的 Promise,我们从每个 then 回调返回一个新的 Promise。这使我们能够将 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,确保按顺序继续执行。
一般模式
链接承诺的模式如下如下所示:
somePromise.then(function(r1) { return nextPromise.then(function(r2) { return anyValue; }); }) // resolves with anyValue || \||/ \/ somePromise.then(function(r1) { return nextPromise; }).then(function(r2) { return anyValue; }) // resolves with anyValue as well
返回新的 Promise 时,该 Promise 的结果值将传递给链中的下一个处理程序。或者,如果处理程序返回的 Promise 是链中的最后一个,则该 Promise 的解析值将传递给使用者。
以上是如何解除 Promise 以获得更简洁的异步 JavaScript 代码?的详细内容。更多信息请关注PHP中文网其他相关文章!