How to check if a Promise is pending
ecmascript-6, es6-promise, javascript, promise
Solution
You can attach a `then` handler that sets a `done` flag on the promise (or the `RunTest` instance if you prefer), and test that:
if (!this.promise) {
this.promise = this.someTest();
this.promise.finally(() => { this.promise.done = true; });
retVal = true;
}
if ( this.promise.done ) {
this.promise = this.someTest();
this.promise.finally(() => { this.promise.done = true; });
retVal = true;
}
The `finally()` handler ensures that the `done` flag is set regardless of the outcome of the promise.
You probably want to wrap that in a function though to keep the code DRY.
Problem
I have this situation in which I would like to know what the status is of a promise. Below, the function `start` only calls `someTest` if it is not running anymore (Promise is not pending). The `start` function can be called many times, but if its called while the tests are still running, its not going to wait and returns just `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 }); } } ``` I cannot find a way to simply check the status of a promise. Something like `this.promise.isPending` would be nice :) Any help would be appreciated!