Settimeout은 종종 함수 실행을 지연시키는 데 사용되며 다음과 같이 사용됩니다.
코드 사본은 다음과 같습니다.
settimeout (function () {
…
}, 타임 아웃);
때때로, settimeout (함수…, 0)은 비동기 처리에 사용됩니다. 예를 들어:
코드 사본은 다음과 같습니다.
함수 f () {
… // 준비하십시오
settimeout (function () {
…. // 무언가를합니다
}, 0);
반품 …;
}
settimeout에 의해 설정된 기능 프로세서 전에 함수 f는 반환합니다.
비동기 처리를 사용할 때, 특히 클로저 기능을 사용할 때 특히주의하십시오.
예를 들어:
코드 사본은 다음과 같습니다.
for (var i = 0; i <10; i ++) {
settimeout (function () {
Console.log (i);
}, 0);
}
이 방법을 처음으로 사용하는 학생들에게는 프로그램이 0… 9 인쇄 될 것이라고 생각할 가능성이 있지만 결과는 실제로 10 인쇄되어 있습니다.
문제는 루프가 완료되면 함수가 실행되고 10이되고 10이 Console.log (i)에 사용된다는 것입니다!
추가하는 목적은 0… 9를 인쇄하는 것이므로 메소드를 변경하고 기능 매개 변수를 사용하여 0… .9를 절약 할 수 있습니다.
코드 사본은 다음과 같습니다.
for (var i = 0; i <10; i ++) {
settimeout ((함수 (i) {
return function () {
Console.log (i);
}
}) (i), 0);
}