Ho questa situazione in cui vorrei sapere qual è lo stato di una promessa. Sotto, la funzione start
chiama solo someTest
se non è più in esecuzione (Promise non è in sospeso). La funzione start
può essere chiamato molte volte, ma se la sua chiamata, mentre i test sono ancora in funzione, non la sua intenzione di aspettare e restituisce solo false
Come verificare se una promessa è in sospeso
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
});
}
}
non riesco a trovare un modo per verificare semplicemente lo stato di una promessa. Qualcosa come this.promise.isPending
sarebbe carino :) Qualsiasi aiuto sarebbe apprezzato!
Qual è il caso d'uso? Non credo che le promesse native supportino questo, è una cosa strana da voler fare, ma Blubird fa http://bluebirdjs.com/docs/api/ispending.html – elclanrs
Non sono sicuro se hai già controllato Mozilla, ma hanno buoni esempi e documentazione sulle promesse - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –
Nel mio caso è un 'setInterval' che chiama qualcosa di asincrono tutto il tempo. E quel qualcosa dovrebbe funzionare solo uno alla volta. Ovviamente potrei impostare una variabile su 'this', come' this.isBusy = true' per esempio. Ma a mio parere, sembra una soluzione per non conoscere lo stato di una promessa –