Q.js: Возможно ли узнать, разрешено или отклонено обещание или нет?

В моем сценарии я возвращаю обещание, когда я делаю запрос.

В конце я разрешаю/отклоняю отложенное obj.

Я хочу повторно использовать обещание, если оно не было разрешено/отклонено.

Любая информация будет полезна.

Ответ 1

Я получил ответ, посмотрев на источник q.js.

deferred.promise.inspect().state

Это вернет состояние обещания.

returns "fulfilled" if it was resolved or fulfilled
returns "rejected" if it was rejected
returns "pending" if it hasn't been resolved or rejected

Ответ 2

Вы можете использовать методы государственного осмотра, которые являются менее подробными. И вызывать метод всегда лучше, чем проверять состояние ===. Если есть опечатка с методом, вы будете знать немедленно. С === он может вернуть false, и тогда у вас будет ошибка. Из справочника Q API

promise.isFulfilled()

Возвращает, находится ли данное обещание в выполненном состоянии. Когда статическая версия используется для не-обещаний, результат всегда true.

promise.isRejected()

Возвращает, находится ли данное обещание в отклоненном состоянии. Когда статическая версия используется для не-обещаний, результат всегда false.

promise.isPending()

Возвращает, находится ли данное обещание в состоянии ожидания. Когда статическая версия используется для не-обещаний, результат всегда false.