【发布时间】:2015-03-24 17:07:42
【问题描述】:
我正在尝试使用 react.js 的 waitFor 功能,但似乎我做错了什么。
我想要做的基本操作是等待一个商店被填满,然后再从另一家商店调用它。 1.在第一店注册token
RipplelinesStore.dispatcherIndex= Dispatcher.register(function(payload) {
var action = payload.action;
var result;
switch(action.actionType) {
case Constants.ActionTypes.ASK_RIPPLELINES:
registerAccount(action.result);
RipplelinesStore.emitChange(action.result);
break;
}
});
2.在其他商店写等待
Dispatcher.register(function(payload) {
var action = payload.action;
var result;
switch(action.actionType) {
case Constants.ActionTypes.ASK_RIPPLEACCOUNTOVERVIEW:
console.log("overviewstore",payload);
Dispatcher.waitFor([
RipplelinesStore.dispatcherIndex,
]);
RippleaccountoverviewsStore.test= RipplelinesStore.getAll();
console.log(RippleaccountoverviewsStore.test);
break;
}
return true;
});
不幸的是,我的 getall() 方法返回一个空对象(getAll() 写得很好)。所以看起来waitFor调度器功能不起作用。
基本上我知道这是因为第一家商店仍在接收来自服务器的答案,但我认为 waitFor 会等待它被获取我不明白。
有什么线索吗?谢谢!
编辑:我像这样触发了第一个商店获取。我不明白的是,一旦我的骨干集合被提取,我就会分派负载(我用一个承诺成功分派......)
ripplelinescollection.createLinesList(toresolve.toJSON()).then(function() {
Dispatcher.handleViewAction({
actionType: Constants.ActionTypes.ASK_RIPPLELINES,
result: ripplelinescollection
});
});
我还尝试将 waitfor 绑定到一个从未调用但其他商店仍未等待的操作!奇怪!
【问题讨论】:
-
您究竟是如何从服务器获取它的?商店是同步的,如果您在商店的回调中触发请求,其他商店不会等待。
-
我从我的动作控制器中获取它,我编辑了我的帖子
-
看起来您的代码正在两个控制器中测试不同的操作常量。 Constants.ActionTypes.ASK_RIPPLELINES、Constants.ActionTypes.ASK_RIPPLEACCOUNTOVERVIEW。
标签: reactjs-flux