我正在尝试使用react.js的waitFor函数,但似乎我做错了。
我想要做什么我基本的,等待商店填写之前从另一家商店打电话。 1.在第一个商店中注册令牌
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绑定到一个从未调用但另一个商店仍未等待的操作! WEIRD!
答案 0 :(得分:9)
似乎问题是来自服务器的异步提取。 waitFor不应该以这种方式工作。一旦从服务器收到数据,您将不得不引入另一个触发的操作。