Backbone 上的 Bluebird PromisifyAll 未解析

Bluebird PromisifyAll on Backbone not resolving

特别是我想承诺 model.fetch 方法,所以当我创建模型时我承诺 Backbone

function (_, Backbone, Promise) {
  Backbone = Promise.promisifyAll(Backbone);
  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 调用非 promisifyed 版本的 sync 和 ajax 调用不 return 在这个 promise 中解析。我是新手,如果我写了一些愚蠢的东西,我很抱歉。

关于承诺 backbone 我在 google 中发现的信息很少,只有 npm 上的几个包,但我不想包含额外的包,特别是如果它们不受欢迎。

正如@BenjaminGruenbaum 在评论中所说

fetch returns backbone 中的承诺,无需再承诺。

promisify 仅适用于具有节点函数约定的函数

但是获取 returns jqXHR 并且我想要 Bluebird promise,所以我需要使用 Bluebird.resolve() 就是这样。

所以我得到了这个

            Promise.resolve(diagram.fetch())
                .then(function (res) {
                    console.log('success');
                })
                .catch(() => {
                    console.error('fetch failed');
                });