O que as fibras / futuro realmente fazem?

o que faz a linha de código abaixo?

Npm.require('fibers/future');
Procurei exemplos na Internet e encontrei alguns como este:
Future = Npm.require('fibers/future');
var accessToken = new Future();

qual será a variável neste caso?

Author: Chad, 2016-04-15

1 answers

A pergunta é um pouco velha, mas os meus 2 cêntimos:

Como Molda disse no comentário, o principal propósito do Futuro é fazer as coisas de async funcionarem sincronicamente. future a instância vem com 3 métodos:
  • Basicamente diz ao seu tópico para parar até lhe dizerem para continuar.
  • future.return(value), a primeira maneira de dizer à espera {[[1]} ele pode continuar, também é muito útil, uma vez que retorna um valor espera pode então ser atribuído com, daí linhas como const ret = future.wait() onde ret se torna seu retornado o valor foi retomado uma vez.
  • future.throw(error), Muito explícito também, faz a sua linha de bloqueio atirar com um erro dado.
Fazer as coisas sincronizadas no javascript pode parecer um pouco perturbador, mas às vezes é útil. Em Meteor, é bastante útil quando você está acorrentando async chamadas em um Meteor.method e você quer que seu resultado seja devolvido ao cliente. Você também pode usar Promises que agora são totalmente suportados por Meteor Também, eu usei ambos e funciona, está ao seu gosto. Um rápido. exemplo:
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;
  }
});
 10
Author: ko0stik, 2017-08-16 15:27:36