Meteor использует обратные вызовы, но кажется, что их нет с действиями Redux. Таким образом, если использовать что-то вроде Redux и имеет что-то действие, как это:Метеор, как ждать по обратному вызову перед отправкой Redux action
export function loginWithPassword(email, password) {
return dispatch => {
Meteor.loginWithPassword(email, password, error => {
if (error) {
return dispatch({type: ASYNC_ERROR, data: error.reason})
});
}
}
... действие будет заполнить и вернуть до того делает вызов метеора (таким образом, повторно не рендеринг пользовательского интерфейса, если это необходимо). Я часами пытаюсь найти лучший способ справиться с этим безрезультатно. На основании того, что я смог найти, казалось бы, есть варианты Meteor Futures или Promises, однако я не могу найти ничего, указывающее, что может быть лучше или почему.
Я считаю, что фьючерсы могут быть только серверными и менее широко используются, чем обещания, поэтому обещания могут быть лучшими вариантами, основанными на этом. Я даже не уверен, что Futures - это вариант, поскольку действия на стороне клиента. Но я также не уверен, что Метеор будет хорошо играть с обещаниями, учитывая общий характер синхронизации.
Обещания, которые, я считаю, могут быть либо клиентом, либо сервером. Предполагая, что они были клиентом, было бы лучше помещать их в действия или в код пользовательского интерфейса, отправляя действия - или это действительно имеет значение?
Есть ли у кого-нибудь какие-либо мысли или представление о том, как лучше справляться с чем-то подобным? Рабочий пример того или другого (или обоих) был бы замечательным, потому что я точно не смог найти его после нескольких часов поиска. В частности, было бы замечательно увидеть пример простого входа в Meteor с паролем, отправленным через Redux, который отображает ошибку «Пользователь не найден» или какую-либо другую «асинхронную» ошибку в форме входа в систему пользователя (ПЕРВЫЙ момент времени).
действие выше на самом деле работает, но он возвращается, прежде чем Метеор делается возвращение ошибки, поэтому ошибка не отображается в пользовательском интерфейсе в начальный момент времени.
ТИА!
PS есть несколько примеров там, что дисплей ошибка в окне предупреждения или console.log, но это не то же самое, что обновление/отображение его в качестве опоры в пользовательском интерфейсе, который отправил действие. Нет никаких повторных ссылок на оповещение или консоль. ог. Вся идея состоит в том, чтобы показать ошибку в том виде, в котором пользователь в данный момент находится (форма входа в этом примере)
Можете указать, где Метеор утверждает, что синхронизация в этом отношении? Я не знаю такого требования. Методы обратного вызова метода Метеор являются асинхронными по своей природе, поэтому вам нужно будет обрабатывать их в форме асинхронизации, будь то Redux или любой другой менеджер состояний. – MasterAM
См. Раздел API здесь, как один пример, в котором описаны Meteor API ... https://github.com/meteorhacks/meteor-async –
Это относится только к серверу.Волокна позволяют Meteor использовать синхронный синтаксис с асинхронными API на сервере, но он не имеет ничего общего с клиентом. BTW, репозиторий, с которым вы связались, не является официальным ресурсом Meteor, хотя Arunoda является видным членом сообщества Meteor. – MasterAM