添加拒绝/决心赶上/成功

我使用下面的代码,我想知道最佳实践的用法,如果我应该添加拒绝在这个承诺内的承诺?

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的返回值(如果不是)parsing的promise,我相信这两种情况都是响应对象本身( 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 }) 

…或通过使用蓝鸟的Promise.reject (也是ES2015兼容):

 .catch(function(err) { res.status(500).send("error: " + err); return Promise.reject(err); }) 

如果您希望呼叫者知道重新启动是否成功,则不要。