Почему моя функция вызывается до истечения времени ожидания setTimeout ()? - PullRequest
0 голосов
/ 12 января 2012

Это кажется неправильным, но именно так Firefox действует.

setTimeout(print(),5000);
function print(){
    console.log(1);
}

До истечения 5 секунд, после нажатия на ссылку и до начала отображения следующей страницы 1 выводится на консоль. Есть идеи? Спасибо!

Редактировать : повторяется, чтобы было очевидно, что в примере кода есть ошибка, а не поведение firefox.

Ответы [ 2 ]

7 голосов
/ 12 января 2012

Нет, проблема в том, что вы немедленно выполняете функцию печати. Снимите скобки, чтобы передать объект функции, а не выполнить его.

setTimeout(print,50000);
4 голосов
/ 12 января 2012

Firefox вызовет print, когда получит выражение, которое его вызывает, например, print().

Вы звоните print и передаете его возвращаемое значение (undefined) на setTimeout.

Бросьте (), чтобы передать саму функцию.

...