2016-04-15 5 views
4

下記のコード行は何をしていますか?繊維/未来は実際に何をしていますか?

Npm.require('fibers/future'); 

私は例のためのオンラインを見て、私はこのようないくつか出くわし:accessToken変数は、この場合には

Future = Npm.require('fibers/future'); 
var accessToken = new Future(); 

何でしょうか?

+1

それは、すべてのコールバックとの約束についてです。非同期コードを同期して実行することができます。 – Molda

答えて

6

質問は少し古いですが、私の2セント:

MOLDAはコメントで言ったように、今後の主な目的は、非同期物事を同期動作させるためです。 futureインスタンスは、3つの方法が付属しています:

  • future.wait()基本的には基本的に再開するように言われるまで一時停止するためにあなたのスレッドを伝えます。それはRETがあなたの返り値は一度再開となりconst ret = future.wait()のような行ため、待ち時間は、その後に割り当てることができる値を返すので、
  • future.return(value)、彼は再開できfutureを待って指示する最初の方法、それはまた、非常に便利です。
  • future.throw(error)も明示的に指定したエラーでブロック行をスローします。

javascriptで同期させることは少し気になるかもしれませんが、時には便利です。 では、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; 
    } 
}); 
関連する問題