尝试使用Bookshelf.js清理Node.js中的嵌套Promise Chain
这是我的代码看起来像:
return request.app.currentProject().then(function(project) { return project.prs().query({ where: {id: request.params.prId} }).fetchOne().then(function(pr) { if (!pr) { return reply(Boom.notFound()); } pr.destroy().then(function(model) { return reply().code(204); }).catch(function(err) { return reply(Boom.badRequest(err)); }); }).catch(function(err) { return reply(Boom.badRequest(err)); }); }).catch(function(err) { return reply(Boom.badRequest(err)); });
现在,在上面的代码中,我必须逐个捕获每个承诺。 无论如何要把它们连锁起来,这样错误就不会一个一个地抓住每一个承诺了。
更新
return request.app.currentProject().then(function(project) { return project.prs().query({ where: {id: request.params.prId} }).fetchOne(); }).then(function(pr) { return pr.destroy(); }).catch(function(err) { return reply(Boom.badRequest(err)); });
承诺错误自动冒出来; 你不需要做任何事情。
只要除去链末尾的所有error handling程序。
有关error handling的更详细指导,请参阅我的博客 。