10

我正在尝试使用 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 绑定到一个从未调用但另一家商店仍未等待的动作!诡异的 !

4

1 回答 1

9

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

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

于 2015-02-23T16:57:41.143 回答