Есть ли какой-нибудь символ статуса Promise? - PullRequest
1 голос
/ 23 июня 2019

Поскольку существует новый комбинатор Promise с именем Promise.allSettled Я заинтересован в выполнении некоторой кодовой логики, основанной на состоянии разрешения Обещаний.

например:

Promise.allSettled([
    callApi("http://example.com/wishlist"),
    callApi("http://example.com/brands")
])
.then(([wishlist, brands]) => {
    if(brands.status === "failed"){
        notifyMe()
    }
})

Как видите, я использую статическое значение для сравнения статуса разрешения обещаний brands.status === "failed"

Вы можете называть меня параноиком, но то, как JavaScript развивается, может изменить это значение в будущем иЯ бы предпочел иметь что-то менее статичное.

Мой вопрос: есть ли Symbol.PromiseRejected|Symbol.PromiseResolved или что-то релевантное, которое заключает в себе резолюцию об обещании?

1 Ответ

1 голос
/ 23 июня 2019

Вы можете называть меня параноиком, но как JavaScript развивается, это значение может измениться в будущем

Нет, не будет. JS будет (необходимо) поддерживать обратную совместимость, это никогда не изменится. Нет смысла переименовывать свойство .status, это не значит, что имена свойств объектов результатов, подобных этому (или объектов результатов итераторов и т. Д.), Будут сталкиваться с чем-то новым.

Мой вопрос: есть ли Symbol.PromiseRejected|Symbol.PromiseResolved или что-то релевантное, которое включает в себя резолюцию об обещании?

Нет, нет. В любом случае, они не символы.

Если вы абсолютно параноик, вы можете либо написать свою собственную тривиальную allSettled функцию , где вы можете контролировать форму объектов результата, либо вы можете написать isRejected(result) и isFulfilled(result) helper функции, которые нужно вызывать везде, чтобы в маловероятном случае изменения чего-либо вам пришлось бы изменять только одну строку кода.

...