Что на самом деле делают волокна / будущее?
Что делает строка кода ниже?
Npm.require('fibers/future');
Я искал в Интернете примеры и наткнулся на несколько таких:
Future = Npm.require('fibers/future');
var accessToken = new Future();
Что будет accessToken
переменная будет в этом случае?
1 ответ
Вопрос немного староват, но мои 2 цента:
Как сказала Молда в комментарии, главная цель Future - заставить асинхронные вещи работать синхронно.future
Экземпляр поставляется с 3 методами:
future.wait()
в основном говорит вашей теме, чтобы в основном приостановить, пока не сказал, чтобы возобновить.future.return(value)
Первый способ рассказать ожиданияfuture
он может возобновить, это также очень полезно, так как он возвращает значение, которому может быть присвоено ожидание, следовательно, такие строки какconst ret = future.wait()
где ret становится вашим возвращенным значением после возобновления.future.throw(error)
тоже довольно явно заставляет вашу блокирующую строку выдавать с данной ошибкой.
Синхронизация в Ja vaScript может показаться немного тревожной, но иногда это полезно. В 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;
}
});