Fluxible Context方法挂起

时间:2015-11-28 02:26:29

标签: javascript fluxible

我面临的情况是Fluxible Action上下文中的方法似乎挂起了。我认为我的麻烦源于这样一个事实,即我在ES5写作,我不得不最好地猜测Fluxible主页上的ES6示例如何翻译(linklink)。

无论如何,这里有一些相关的代码(大大简化了尝试并强调了我认为可能很重要的部分):

Store.js

var BaseStore = require('fluxible/addons/BaseStore');
var assign = require('object-assign');

var Store = assign({}, BaseStore.prototype, {
    handleAction: function(data) {
       console.log('Action Done');
       this.emitChange();
    }
    ... (other methods) ...
}

Store.storeName = 'Store';
Store.handlers = { 'ACTION_DONE': 'handleAction' };

module.exports = Store;

Actions.js

var Promise = require('promise');
var Store = require('./Store');

var Actions = {
   action1: function(context, payload) {
       return new Promise(function(resolve, reject) {
           console.log('Action 1');
           context.dispatch('ACTION_DONE', {});
           resolve(true);
       });
   },

   action2: function(context, payload) {
       return new Promise(function(resolve, reject) {
           // Try to fetch a value from the store and display it
           var store = context.getStore(Store.constructor);
           console.log(store.getValue());
           context.dispatch('ACTION_DONE', {});
           resolve(true);
       });
   }
}

module.exports = Actions;

我正在使用以下几行的整个设置

var Promise = require('promise');
var Fluxible = require('fluxible');
var Store = require('./Store');
var Actions = require('./Actions');

var app = new Fluxible();
app.registerStore(Store.constructor);

var context = app.createContext();
var action1 = context.executeAction(Actions.action1, {});
var action2 = context.executeAction(Actions.action2, {});

Promise.all([action1, action2]).then(function(val) { console.log('done'); });

我在使用print语句调试时发现执行卡在context.dispatch('ACTION_DONE', {});的{​​{1}}和Actions.action1的{​​{1}}。这让我对我的ES5翻译示例感到疑惑 - 特别是我对Store.js的实现。

任何帮助将不胜感激。如果我能提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

原来createStore中的方法fluxible/addons可以解决我的问题 - 将assign({}, BaseStore.prototype, { ... })更改为createStore({ ... })

我不完全明白我现在所做的与我正在做的事情之间的区别是什么;所以请随意回答解释。现在,我的问题已经解决了。