【问题标题】:React dispatcher WAITFOR反应调度员等待
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 确实“等待”令人困惑。它应该被称为“CheckThisStore”或“GetLastStoreResult”,因为实际上它并没有“等待”任何东西
  • Jesus waterwalking Christ 以一种暗示 API 所做的事情与实际所做的完全不同的方式来命名 API 真是一个绝妙的主意……
猜你喜欢
  • 2021-01-27
  • 2021-08-20
  • 2021-12-30
  • 2020-10-16
  • 2019-10-21
  • 2018-08-19
  • 2018-01-26
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多