2017-07-28 7 views
0

イベントループと実行タイミングを説明するan articleを読んでいます。その中には、イベントループがタスクを実行するために選択できる複数のタスクキューが存在する可能性があります。私の主な質問はです。ブラウザはいつ新しいキューを作成するのですか?私はこれを観察しようとしましたが、これまでできなかったことがあります。JSイベントループで複数のタスクキューを観察する方法

件名のthis other articleとは対照的に、複数のキューには言及していないので、何かを誤解しているか、2つの記事のいずれかが間違っています。

+0

イベントループはJavaScript(ECMAScript)標準の一部ではなく、実装固有のものです。私はあなたがJavaScriptを介してそれを観察できるとは思わない。 –

答えて

0

私は、問題の2つの記事がちょうど異なる用語を使用していると思います。物品1では

イベントループは、そのソース内の実行順序を保証する複数のタスクのソースを持っています...記事の

イベントループは複数のタスクキューを持つことができます...タスクはevの挿入順に処理されなければなりませんエリーキュー。

異なるキューを観察についての私自身の質問に答えるために、私はそれがこのような単純なことだと思う:

function foo() { 
    console.log('Start of queue'); 
    bar(); 
    Promise.resolve().then(function() { 
    console.log('Promise resolved'); 
    }); 
    console.log('End of queue'); 
} 

function bar() { 
    setTimeout(function() { 
    console.log('Start of next queue'); 
    console.log('End of next queue'); 
    }, 0); 
} 

foo(); 
//-> Start of queue 
//-> End of queue 
//-> Promise resolved 
//-> Start of next queue 
//-> End of next queue 

最初タスクキュー(またはタスクソース)がfoo()です。 foo()bar()を呼び出し、bar()setTimeout()を呼び出し、新しいタスクキュー(またはタスクソース)を設定します。各タスクキューを観察する方法は、Promiseを解決することです。 Promiseコールバックはマイクロキューに挿入されます。すべてマイクロキュータスクは、すべてタスクキュー(またはタスクソース)の末尾で実行されます。我々は約束がキュー終わりと次のキューコンソールログのスタートの間を解決し参照するので、私たちはさまざまなイベント・キューを観察しているということを結論付けることができます。

関連する問題