2017-02-14 1 views
0

これは基本的な質問のビットですが、私はJavaScriptを学ぶので、ランタイムのニュアンスの一部にはまだぼんやりしています。具体的には、イベントループがArray.prototype.mapのようなものをどのように処理するのか不思議です。正確な実装がわからなければ、コードを繰り返し実行することができますか?JavaScriptイベントループは、マップの反復間で制御を行いますか?

答えて

4

いいえ。 mapは同期動作です。

setTimeout(function() { 
 
    console.log('run as soon as possible'); 
 
}, 0); 
 

 
[1, 2, 3, 4, 5].map(function(x) { 
 
    console.log(x); 
 
});

イベントループは基本的に次のようにブレークダウン:必要に応じて

  1. ラン同期コード
  2. イベントキューに項目を追加し、完了同期コード
  3. を実行しています
  4. イベントキューで非同期コードを実行する準備ができているので、もしあなたが構築言う4.
+0

に戻り、何のコードを実行する準備ができていない場合は、同期コードとして、それを起動し、1

  • に戻り、今
  • 実行する必要がありYコード'map'を介して関数の配列を作成します。おそらく、それらの関数が実行される前に' setTimeout'が呼び出される次の行でそれらの関数を実行するとしますか? – maxcountryman

  • +0

    @maxcountrymanマップの直後にさらに同期コードを実行すると、そのコードは関数がsetTimeoutに渡される前に実行されます –

    +0

    'setTimeout'は次の同期コード行の前にコールバックを実行しないと言っていますか? – maxcountryman

    関連する問題