Функция ожидания Javascript()

Я хочу создать функцию JavaScript wait().

Что я должен редактировать?

function wait(waitsecs) {
    setTimeout(donothing(), 'waitsecs');
}

function donothing() {
    //
}

Ответ 1

Javascript не является потоковым, поэтому "ожидание" заморозит всю страницу (и, вероятно, приведет к тому, что браузер полностью перестанет работать с script).

Чтобы конкретно решить вашу проблему, вы должны удалить скобки после donothing в своем вызове setTimeout и сделать waitsecs число, а не строку:

console.log('before');
setTimeout(donothing,500); // run donothing after 0.5 seconds
console.log('after');

Но это не остановит выполнение; "after" будет регистрироваться до запуска вашей функции.

Чтобы правильно подождать, вы можете использовать анонимные функции:

console.log('before');
setTimeout(function(){
    console.log('after');
},500);

Все ваши переменные все равно будут находиться в разделе "после". Вы не должны их связывать - если вам нужно, вам нужно посмотреть, как вы структурируете программу. Также вы можете использовать setInterval/clearInterval, если это необходимо для цикла.

Ответ 2

Вы не должны редактировать его, вы должны полностью отказаться от него.

Любая попытка остановки выполнения в течение определенного времени блокирует браузер и переключает его в состояние "Не реагировать". Единственное, что вы можете сделать, это правильно использовать setTimeout.