2016-04-29 12 views
0

jsの約束がどのように内部的に働くか知りたい。JS Promiseは内部的にどのように機能しますか?

私はグーグルだが、私は答えを見つけることができませんでした(または私はどのようにGoogleに知らなかった)。

どのようにあなたに戻ってくるのか分かりません。

function whatever() { 
    doSomethingLocally; 

    callPromiseThatGoesAllOverTheWorldAndThenGetsBackToYou() 
     .then(
      doSomethingLocallyAgain 
     ); 

    doSomeOtherThingLocally; 
} 

私は約束が満たされたとき、それが戻っコードの右の点(つまり「doSomethingLocallyAgain」)を取得する方法を、知っていただきたいと思います:

は、私は、このクライアントコードを考えてみましょう。

+0

仕様[どのように彼らが_behave_](http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects)を記述しているのか、実際に内部でどのように動作するかは、仕様の実装者(つまり、JavaScriptエンジン)。おそらくもっと良い質問かもしれませんが、これについて尋ねている根本的な理由はありますか? –

+0

私はこの流れがどのように正確なポイントに戻るのかわからないので、私はこれを求めています。 ポインタを使って何かを聞いているソケットがあるかどうかわかりませんので、レスポンスを受け取ったときに、その正確なポイントにフローを変更します。 –

+0

'doSomethingLocallyAgain'は関数でなければなりません。あなたはその関数を約束に渡しています。そして、それが完了するとその関数を単に呼び出すだけです。それについて魔法はありません。コールバックがどのように機能するかの簡単な例を以下に示します: 'function do(f){setTimeout(()=> {/ *内部処理*/f();}、3000); }; do(()=> console.log( '私に電話する')); '。この例では、 'do'は関数を受け取り、準備ができたらそれを呼び出します。 –

答えて

2

プロミスは、関数に渡す代わりに、コールバックをアタッチすることができます。コールバックが決してすぐには呼び出されないが、常にマイクロタスクキューに置かれる素敵な不変量を加えてください。それはかなりです。

関連する問題