【发布时间】:2016-12-13 20:46:49
【问题描述】:
我正在编写一个新的promise,它有许多不同的条件调用reject() 或resolve() 与它们的状态相关,而且我知道第一次调用reject() 时会设置promise 状态 | resolve()。
我的问题是:
是否有任何本机(内置)方式来获得承诺状态?
以下是演示代码:
exports.addStatement = function (db, description, data) {
return new Promise(function (resolve, reject) {
validator.validateStatement(description, data)
.then(function (data) {
//......
if(cnd1)
resolve(res);
if(cnd2)
reject(err);
//......
//How to check if this promise is rejected or resolved yet?
})
.catch(function (err) {
reject(err);
})
})
};
【问题讨论】:
-
承诺不是这样运作的。好像你已经错过了承诺的整个概念。只能在函数返回 promise 后才能使用
then()和catch() -
新的 Promise 状态与内部的 Promise 相关,它有效。
-
两句话。为什么不直接使用
if () {} else if() {} else {}或return resolve();?这样就根本不需要知道 promise 的状态,你的代码就会变得更干净。第二:当validator.validateStatement已经返回一个承诺时,你为什么还需要new Promise? -
如果您想知道您是在自己的函数中调用了 resolve 还是 reject,那么只需保留您自己的标志即可。但是,也许您可以只使用
if/else if /else来了解您是否已经达到您的条件之一。 -
另外,您在此处创建新的外部承诺时使用了反模式。你可以只返回
validator.validateStatement()已经返回的承诺。
标签: javascript node.js promise ecmascript-6