如何从Breeze返回ECMASCRIPT 6承诺
breeze查询返回接口 它使用的是kris kowal的,它使用了一个Q.延迟来返回一个承诺 Q通过Q.Promise公开了符合ES6的承诺 如何从breeze查询中获得ES6承诺?我基本上是希望有一个巧妙的方式来转换一个Q。推迟到一个Q承诺如何从Breeze返回ECMASCRIPT 6承诺,breeze,q,es6-promise,Breeze,Q,Es6 Promise,breeze查询返回接口 它使用的是kris kowal的,它使用了一个Q.延迟来返回一个承诺 Q通过Q.Promise公开了符合ES6的承诺 如何从breeze查询中获得ES6承诺?我基本上是希望有一个巧妙的方式来转换一个Q。推迟到一个Q承诺 function getES6Promise () { var query = breeze.EntityQuery.from("Table"); // How to return as an ES6 Promise? retur
function getES6Promise () {
var query = breeze.EntityQuery.from("Table");
// How to return as an ES6 Promise?
return em.executeQuery(query);
}
我相信您必须在
Promise
周围配置一个包装器,使其看起来像Q
Breeze只需要Q
界面的一小部分:延迟
、解决
和拒绝
<代码>延迟具有承诺
属性<代码>解决和拒绝
退货承诺。只要采用合适的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操作返回的承诺具有您选择的任何承诺库的形状和特征,当然不需要遵守该接口
许多API和文档示例使用fail
和fin
。显然,这些都不是ES6承诺的方法,也不会起作用。对于fail
您需要捕获catch
,对于fin(finFn,finFn)
则需要捕获fin(finFn)
幸运的是,breeze在内部以独占方式调用了promise。然后
并没有使用这些其他promise方法
找个时间试试我的建议,让我们知道效果如何