SettimeOutは、関数の実行を遅らせるためによく使用され、次のように使用されます。
コードコピーは次のとおりです。
setimeout(function(){
…
}、 タイムアウト);
時々、Setimeout(function…、0)が非同期処理に使用されることがあります。例えば:
コードコピーは次のとおりです。
関数f(){
…//準備をしてください
setimeout(function(){
…。 //何かをします
}、0);
戻る …;
}
settimeoutによって設定された関数プロセッサの前に、関数fが戻ります。
非同期処理を使用する場合、特に閉鎖機能を使用する場合は特に注意してください。
例えば:
コードコピーは次のとおりです。
for(var i = 0; i <10; i ++){
setimeout(function(){
console.log(i);
}、0);
}
この方法を初めて使用した学生の場合、プログラムが0…9を印刷すると考える可能性がありますが、結果は実際に10が印刷されます。
問題は、ループが完了すると、関数が実行され、私は10になり、10がConsole.log(i)で使用されることです。
あなたを追加する目的は0…9を印刷することです。そのため、メソッドを変更して関数パラメーターを使用して0….9を節約できます(実際、閉鎖も使用します):
コードコピーは次のとおりです。
for(var i = 0; i <10; i ++){
setimeout((function(i){
return function(){
console.log(i);
}
})(i)、0);
}