私はJSをさらに理解しようとしています。並行動作をシミュレートします
console.log(0);
setTimeout(function() { render('header', 10000000); }, 0);
console.log(1);
setTimeout(function() { render('content', 10000); }, 0);
console.log(2);
setTimeout(function() { render('footer', 100); }, 0);
console.log(3);
function render (element, iteration) {
console.log('render', element);
// Hard work
for(var i=0 ; i < iteration; i++) {
Math.cbrt(i);
}
console.log('rendered', element);
}
しかし、それはいつも同じことをレンダリングています:私は、並列関数呼び出しを行うために何かを実装しようとした
0
1
2
3
render header
rendered header
render content
rendered content
render footer
rendered footer
と私は本当に理由を理解していません。私は施設や他の図書館を使いたくない。
この魔法の背後には何が起こっていますか?
Javascriptはシングルスレッド言語です。スレッドディスパッチャのようなものを実装して、必要なものを実現する必要があります。このようにして何を達成したいですか? –
'setTimeout'呼び出しの直後に別の' console.log'を置いて出力を観察する方が良いかもしれません。 JavaScriptは、移動する前に常に完了まで実行されます。これは、JavaScriptにデータ競争やその他の同期の問題がないことを意味します。 – 4castle