Что на самом деле делают волокна / будущее?

Что делает строка кода ниже?

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;
  }
});
Другие вопросы по тегам