反应调度员WAITFOR

时间:2015-01-26 09:31:44

标签: reactjs-flux

我正在尝试使用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!

1 个答案:

答案 0 :(得分:9)

似乎问题是来自服务器的异步提取。 waitFor不应该以这种方式工作。一旦从服务器收到数据,您将不得不引入另一个触发的操作。

看一下这个答案:https://stackoverflow.com/a/27797444/1717588