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?
8
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 comoconst 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.
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