我有以下代码
var promise = getRaids(client);
promise.then(function (raids) {
res.json(raids);
}, function (err) {
console.error(err);
res.send(403, { error: err});
});
我想将其转换为try catch块,我认为它更具可读性。 代码会是什么样的?
答案 0 :(得分:1)
我认为不可能将其转换为try / catch块。这样做需要阻止try块内的promise,而JavaScript不允许阻止promise。
答案 1 :(得分:1)
使用这样的承诺,它将具有可读性:
getRaids(client)
.then(function (raids) {
res.json(raids);
})
.catch(function (err) {
console.error(err);
res.send(403, { error: err});
});
答案 2 :(得分:0)
如果您真的想要,可以将Harmony与node.js和use generators一起使用:
当你向生成器对象抛出()错误时,实际上是错误 传播回到生成器的代码中,这意味着你可以 实际上使用try和catch语句来捕获它。
如果您希望通过承诺提供可读性,when.js会提供允许使用catch
和finally
等关键字的extended promise API。我确信Q和其他承诺库有类似的机制。
promise.then(function() {
}).catch(function(error) {
}).finally(function() {
// cleanup / etc.
});