Javascript 主干上的Bluebird PromisifyAll未解析
特别是我想要promisify model.fetch方法,所以当我创建模型时,我需要promisify主干 功能、主干、承诺{ 主干=promisefyallbackbone; var-Diagram=Backbone.Model.extend{…}; } 但后来我尝试在我的图模型上使用fetchAsync,但什么都没有发生Javascript 主干上的Bluebird PromisifyAll未解析,javascript,node.js,backbone.js,promise,bluebird,Javascript,Node.js,Backbone.js,Promise,Bluebird,特别是我想要promisify model.fetch方法,所以当我创建模型时,我需要promisify主干 功能、主干、承诺{ 主干=promisefyallbackbone; var-Diagram=Backbone.Model.extend{…}; } 但后来我尝试在我的图模型上使用fetchAsync,但什么都没有发生 diagram.fetchAsync() .then(function() { console.log('success'); }, func
diagram.fetchAsync()
.then(function() {
console.log('success');
},
function() {
console.log('err');
})
.catch(function() {
console.error('fetch failed');
});
在控制台中,这个承诺看起来像这样
_bitField: 0
_fulfillmentHandler0: undefined
_promise0: undefined
_receiver0: undefined
_rejectionHandler0: undefined
__proto__: Object
我认为fetchAsync调用的是sync和ajax调用的非承诺版本,在这个承诺中不会返回resolve。我是个新手,如果我写了一些愚蠢的东西,我很抱歉
关于Promisizing主干网,我在谷歌上发现的信息很少,只有npm上的几个软件包,但我不想包括额外的软件包,特别是如果它们不受欢迎的话。正如@BenjaminGruenbaum在评论中所说的那样 fetch已在主干中返回承诺,无需承诺 promisify仅适用于具有节点函数约定的函数 但是fetch返回jqXHR,我想要Bluebird promise,所以我需要使用Bluebird.resolve,就这样 所以我就这样结束了
Promise.resolve(diagram.fetch())
.then(function (res) {
console.log('success');
})
.catch(() => {
console.error('fetch failed');
});
fetch已经在主干中返回了一个承诺,无需承诺。此外,promisify只在具有节点函数约定的函数上工作,thx@BenjaminGruenbaum您是对的!我发现我需要用Bluebird.resolve包装jqXHR承诺,然后我可以将其用作Bluebird承诺。