Javascript 添加拒绝/解决以捕获/成功
我使用下面的代码,我想知道最好的实践用法,如果我应该添加拒绝 这个承诺在陷阱里Javascript 添加拒绝/解决以捕获/成功,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我使用下面的代码,我想知道最好的实践用法,如果我应该添加拒绝 这个承诺在陷阱里 run: function (req, res) { if (req) { return this._un(req).then(function() { return proce.restart().then(function() { return res.st
run: function (req, res) {
if (req) {
return this._un(req).then(function() {
return proce.restart().then(function() {
return res.status(200).end("sucess");
//Here should I use reslove
});
}).catch(function(err) {
return res.status(500).send("error: " + err);
//Here should I use reject???
});
}
else {
return new Promise(function(resolve, reject) {
reject("No application content found");
});
}
}
};
你不能在承诺中加上拒绝。承诺要么未解决,要么已解决(已解决/拒绝)
如果提供了req
,您的代码当前将返回一个承诺,该承诺将通过返回值end
(如果重新启动成功)或返回值send
(如果没有)来解决,我相信在这两种情况下,它都是响应对象本身(res
)
如果您希望调用方知道重启是否成功,那么是的,您希望拒绝该承诺;有了ES2015承诺,您可以通过投入catch
来实现这一点,我假设蓝鸟与此类似:
.catch(function(err) {
res.status(500).send("error: " + err);
throw err; // Or `throw new Error(err);`, it depends on what `err` is and your convention
})
…或使用蓝鸟(也兼容ES2015):
如果您不想让调用方知道重新启动是否成功,则不要这样做。您不会在承诺中“添加拒绝”。承诺要么未解决,要么已解决(已解决/拒绝)
如果提供了req
,您的代码当前将返回一个承诺,该承诺将通过返回值end
(如果重新启动成功)或返回值send
(如果没有)来解决,我相信在这两种情况下,它都是响应对象本身(res
)
如果您希望调用方知道重启是否成功,那么是的,您希望拒绝该承诺;有了ES2015承诺,您可以通过投入catch
来实现这一点,我假设蓝鸟与此类似:
.catch(function(err) {
res.status(500).send("error: " + err);
throw err; // Or `throw new Error(err);`, it depends on what `err` is and your convention
})
…或使用蓝鸟(也兼容ES2015):
如果您不想让调用方知道重启是否成功,那么就不要这样做