私はJavaScriptで非同期呼び出しについて学習していました。それは2つの方法で混乱している!JavaScriptについて - 非同期呼び出し、これらの2つのプログラムの実行の違い?
今日私はこれらの2つのプログラムを書いて、結果は異なります。誰かが深い違いを説明することができます。
setTimeout(function(){console.log(5)},5);
console.log(55);
setTimeout(function(){console.log(4)},4);
console.log(44);
setTimeout(function(){console.log(2)},2);
console.log(22);
setTimeout(function(){console.log(3)},3);
console.log(33);
と、この -
setTimeout(function(){console.log(5)},5000);
console.log(55);
setTimeout(function(){console.log(4)},4000);
console.log(44);
setTimeout(function(){console.log(2)},2000);
console.log(22);
setTimeout(function(){console.log(3)},3000);
console.log(33);
唯一の違いは、彼らのタイムアウト時間です。私はまた百人と 十 で試してみることもできます。
私の推測するように、その出力はCPUの速度やその他の多くの要因に左右されるかもしれません。
私は...最初のものからこれを得たが
55
44
22
33
2
3
4
5
(予想通り)... THANKSをhere
55
44
22
33
5
2
3
4
2つ目からを実行しました!
EDIT:後、最初のコード部分のため、私はまた、Ubuntuのに試み - nodejs - v5.12.0
私はこの時に理解することは容易ではない5 4 2 3(新しい順列)
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout#Reasons_for_delays_longer_than_specified – melpomene
ええ、5 2 3 4は本当に奇妙です。 4 2 3 5最低限のタイムアウトは4msなので、後者の3つは同じタイムアウトになり、登録された順序で実行されるはずですが、明らかにそれ以上のものがあります。 – Bergi
@Bergiも同じ出力を得ましたか? –