在编程新的promise时,如何检查此promise状态?js
How to check this promise state, when programming a new promise? js
我正在编程一个新的promise,它有许多不同的条件来调用与其状态相关的reject()
或resolve()
,而且我知道promise状态将在第一次调用reject()
|resolve()
时设置。我的问题是:是否有任何本地(内置(方式可以获得promise状态?以下是演示代码:
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()
,并通过回调获得通知。
或者,在您的特定情况下,您可能会更改代码的结构方式,以消除创建不必要的外部承诺并将逻辑切换为if/else-if/else的反模式。
这是清理后的代码:
exports.addStatement = function (db, description, data) {
return validator.validateStatement(description, data)
.then(function (data) {
//......
if(cnd1) {
// make res be the resolved value of the promise
return res;
} else if(cnd2) {
// make promise become rejected with err as the reason
throw err;
} else {
// decide what else to do here
}
})
})
};
如果您不能使If/else为您工作,那么上面的结构应该仍然可以工作,因为return
和throw
都会终止.then()
处理程序的执行。因此,唯一在它们之后继续的代码是尚未为当前promise设置已解析/已拒绝值的代码,因此您不必查看promise的状态即可知道这一点。如果代码超过return
和throw
并且仍在执行,那么这两个代码都没有执行,并且当前promise的已解析/已拒绝值仍然未设置。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 使用promise和mongoose对文档进行排序
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 如何检查Promise是否处于挂起状态
- 函数返回Promise,检查错误
- 检查promise是否已用Javascript完成
- Angular Promise响应检查
- Angularjs检查是否有2个promise返回
- AngularJS检查promise是否为空
- 如何检查promise的当前状态
- 在编程新的promise时,如何检查此promise状态?js
- 检查对象是否是 AngularJS 中的 promise