Диспетчер реакции WAITFOR

Я пытаюсь использовать функцию ожидания для react.js, но, похоже, я делаю что-то не так.

То, что я хочу сделать, это основное: дождаться заполнения магазина, прежде чем звонить из другого магазина. 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
            });
        }); 

Я также попытался связать ожидание с действием, которое никогда не вызывается, но другой магазин все еще не ждет! СТРАННЫЙ !


person François Richard    schedule 26.01.2015    source источник
comment
Как именно вы получаете его с сервера? Хранилища синхронны, если вы запускаете запрос внутри обратного вызова хранилища, другие хранилища его не ждут.   -  person Mark Meeus    schedule 26.01.2015
comment
Я получаю его из своего контроллера действий, я редактировал свой пост   -  person François Richard    schedule 26.01.2015
comment
Похоже, ваш код тестирует разные константы действий в обоих контроллерах. Константы.ТипыДействий.ASK_RIPPLELINES, Константы.ТипыДействий.ASK_RIPPLEACCOUNTOVERVIEW.   -  person Mark Meeus    schedule 27.01.2015


Ответы (1)


похоже, проблема в асинхронной выборке с сервера. waitFor не должен работать таким образом. Вам нужно будет ввести другое действие, которое запускается, как только данные будут получены с сервера.

Взгляните на этот ответ: https://stackoverflow.com/a/27797444/1717588

person FranBran    schedule 23.02.2015
comment
Действительно, ожидание сбивает с толку. Он должен называться CheckThisStore или GetLastStoreResult, потому что на самом деле он ничего не ждет. - person François Richard; 14.06.2015
comment
Иисус, идущий по воде, Христос, какая блестящая идея назвать API таким образом, который предполагает, что он делает что-то совершенно отличное от того, что он делает на самом деле... - person Szczepan Hołyszewski; 18.06.2016