Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干上的Bluebird PromisifyAll未解析_Javascript_Node.js_Backbone.js_Promise_Bluebird - Fatal编程技术网

Javascript 主干上的Bluebird PromisifyAll未解析

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

特别是我想要promisify model.fetch方法,所以当我创建模型时,我需要promisify主干

功能、主干、承诺{ 主干=promisefyallbackbone; var-Diagram=Backbone.Model.extend{…}; } 但后来我尝试在我的图模型上使用fetchAsync,但什么都没有发生

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承诺。