我可能是這個得太多,而是包涵......如果我有下面的代碼如何修改bluebird promise中的express.res,並在另一個promise中使用res?
app.get('/api/endpoint', function(req, res, next) {
new Promise(function() {
// doing something that takes lots of code
return someJson
})
.then(function(someJson) {
// analyze someJson with lots of code
})
.then(function() {
// do more
})
// chain a bunch more promises here
.then(function() {
res.status(200).send(message)
})
.catch(function(err) {
// error handling
})
.finally(function() {
// clean up
})
})
如果承諾鏈變得很長,也可以是導航端點的痛苦。所以,我希望承諾的每一步都是它自己的功能(以簡化上面的代碼)。所以,我可以重寫前2許諾像這樣:
function findSomeJson() {
return new Promise(function() {
// doing something that takes lots of code
return someJson
})
}
function analyzeSomeJson(someJson) {
return new Promise(function(someJson) {
// analyze someJson with lots of code
})
}
現在,每一項功能都可以在原來的例子可以使用像這樣:
findSomeJson()
.then(function(someJson) {
return analyzeSomeJson(someJson)
})
// etc...
但是,如果我需要調整會發生什麼res
在那些承諾?我是否需要每次都返回res
並在res中存儲一些json?而且,如果我必須使用next(),會發生什麼?我如何確保res
在我的承諾鏈最後修改?我不能在finally()
這樣做,我必須在我最後的承諾中做到這一點嗎?
什麼是「私人功能」? – Bergi
關閉以解救! – Bergi
私人不需要。刪除它。 – Matt