У меня есть такая ситуация, в которой я хотел бы знать, какой статус является обещанием. Ниже, функция start
вызывает только someTest
, если он больше не работает (обещание не ожидается). 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 делает http://bluebirdjs.com/docs/api/ispending.html – elclanrs
Не уверен, что вы еще не отметили Mozilla, но у них есть хорошие примеры и документация по обещаниям - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –
В моем случае его 'setInterval' вызывает что-то async все время. И что-то должно запускаться только тогда. Я мог бы, конечно, установить переменную на 'this', например' this.isBusy = true'. Но, на мой взгляд, это звучит как обход для незнания статуса обещания. –