Вопрос немного старый, но мои 2 цента:
Как сказал Molda в комментарии, основная цель Будущего том, чтобы сделать вещи работают асинхронные синхронно. future
экземпляр поставляется с 3-мя способами:
future.wait()
в основном говорит ваш поток в основном паузу, пока не сказал, чтобы возобновить.
future.return(value)
, первый способ рассказать ожидание future
он может возобновить, он также очень полезен, так как он возвращает значение ожидания, которое затем может быть присвоено, следовательно, строки, такие как , где ret будет возвращенным вами значением после возобновления.
future.throw(error)
, совершенно явный, делает вашу линию блокировки с заданной ошибкой.
Создание синхронных событий в javascript может показаться немного тревожным, но иногда полезно. В Meteor
это очень полезно, когда вы связываете асинхронные вызовы в Meteor.method
и хотите, чтобы его результат был возвращен клиенту. Вы также можете использовать Promises
, которые теперь полностью поддерживаются Meteor
. Я использовал оба, и это работает, это по вашему вкусу.
Быстрый пример:
Meteor.methods({
foo: function() {
const future = new Future();
someAsyncCall(foo, function bar(error, result) {
if (error) future.throw(error);
future.return(result);
});
// Execution is paused until callback arrives
const ret = future.wait(); // Wait on future not Future
return ret;
}
});
Это все обратные вызовы и посылов. Он позволяет запускать асинхронный код синхронно. – Molda