【发布时间】:2016-07-17 14:06:04
【问题描述】:
我有这种情况,我想知道一个承诺的状态。下面,函数start 仅在不再运行时调用someTest(Promise 未挂起)。 start 函数可以被多次调用,但如果在测试仍在运行时调用它,它不会等待并返回 false
class RunTest {
start() {
retVal = false;
if (!this.promise) {
this.promise = this.someTest();
retVal = true;
}
if ( /* if promise is resolved/rejected or not pending */ ) {
this.promise = this.someTest();
retVal = true;
}
return retVal;
}
someTest() {
return new Promise((resolve, reject) => {
// some tests go inhere
});
}
}
我找不到简单检查承诺状态的方法。像this.promise.isPending 这样的东西会很好:) 任何帮助将不胜感激!
【问题讨论】:
-
用例是什么?我不认为原生承诺支持这一点,这是一件很奇怪的事情,但 Blubird 支持 bluebirdjs.com/docs/api/ispending.html
-
不确定你是否已经检查过 Mozilla,但他们有很好的例子和关于 Promise 的文档 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
在我的例子中,
setInterval一直在调用异步的东西。而且那个时候应该只运行一个。我当然可以在this上设置一个变量,例如this.isBusy = true。但在我看来,这听起来像是一个不知道承诺状态的解决方法 -
mozilla 页面确实很棒,但是没有关于如何检查promise 状态的内容。如果我错过了,请告诉我们!
-
检查一个promise是否挂起看起来并不“奇怪”,它似乎是绝对基础的。
标签: javascript promise ecmascript-6 es6-promise