Я считаю, что вы должны настроить ветер с оберткой вокруг Promise
, что делает его похожим на Q
.
Breeze нужен только крошечную часть интерфейса Q
: defer
, resolve
и reject
. defer
имеет свойство promise
. resolve
и reject
возврат обещаний. Обещание может приходить из любой библиотеки, если оно подходит подходящему методу then
.
Вот обертка я состряпал с верхней части моей головы, но на самом деле не пробовал:
(function() {
function defer() {
var deferred = {}
deferred.promise = new Promise((resolve, reject) => {
deferred.resolve = resolve;
deferred.reject = reject;
})
return deferred;
}
var Q = {
all: Promise.all,
defer: defer,
resolve: Promise.resolve,
reject: Promise.reject
}
breeze.config.setQ(Q)
})()
FWIW, интерфейс breeze.Promises.IPromise, к которому ваш см бесполезен и должен быть удален из документации.
Дело в том, что обещание, возвращенное операцией Бриз, имеет форму и характеристики любой библиотеки обещаний, которую вы выбираете, и, безусловно, не нужно придерживаться , что интерфейс.
Многие из примеров API и документации используют fail
и fin
. Очевидно, что это не методы обещания ES6 и не будут работать. Вы хотите, чтобы catch
для fail
и then(finFn, finFn)
для fin(finFn)
.
К счастью, внутренний бриз вызывает только promise.then
и не использует эти другие методы обещания.
Попробуйте мое предложение об упаковке позже и сообщите нам, как это работает.