Ember RSVP承诺解决firefox插件端口消息传递方案无法解决的模型

Ember RSVP Promise for model not resolving with firefox addon port messaging scheme

本文关键字:解决 方案 消息传递 模型 承诺 RSVP firefox 插件 Ember      更新时间:2023-09-26

下面是代码示例。这是插件面板。

路由器承诺不会从全局侦听器内部解析,尽管它可以与普通的ajax请求一起工作。

import Ember from 'ember';
export default Ember.Route.extend({

  model: function() {
  return new Ember.RSVP.Promise(function(resolve, reject) {
// This works 
Ember.$.ajax({
    url : "http://bla.com"
    type: "POST"
    }).then(function(response){
        resolve(response);;
    });

// This doesn't work
addon.port.on(url, function(status, response) {
    resolve(response); 
})

  });
});

我在某处读到这可以用Ember.run.bind处理,但不能让它工作

如果您使用Ember.run.join(this, resolve, response),它会工作吗?

addon.port.on(url, function(status, response) {
    // just in case it doesn't work, add a log here to make sure your callback
    // is actually being called.
    console.log('got response');
    Ember.run.join(this, resolve, response); 
});

Ember.run.join将加入现有的运行循环或创建一个新的运行循环。