Fluxible Action コンテキストのメソッドがハングしているように見える状況に直面しています。私の問題は、私が ES5 で書いていて、Fluxible のホームページにある ES6 の例がどのように翻訳されるかについて最善の推測をしなければならなかったことに起因していると思います (リンクとリンク)。
とにかく、ここにいくつかの関連コードがあります(重要であると思われる部分を強調するために大幅に簡略化されています):
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', {});
inActions.action1
およびvar store = context.getStore(Store.constructor);
inで実行がスタックすることがわかりましたActions.action2
。これは、ES5 での例の翻訳、特に Store.js の実装に疑問を抱かせます。
どんな助けでも大歓迎です。また、他に提供できる情報があればお知らせください。