В хронологическом порядке:
вы определяете функцию a
без назвав его
вы планирования a
, который будет вызван после двух секунд: setTimeout(a,2000)
это называется
, когда она называется, она планирует сама для вызова через 100 миллисекунд
Ваш код в основном спит в течение 2 секунд, а затем выполняет a
100 мс пауза [*].
Однако, судя по вашим условиям вы спрашиваете, что является приоритет в следующей ситуации:
setTimeout(a, 2000);
setTimeout(b, 100);
Ну, скорее всего b
будет называться первым (при условии, что нет непредсказуемый паузы между первой и второй линией, например, из-за общей проблемы производительности ОС).
Если вы используете одни и те же таймауты:
setTimeout(a, 100);
setTimeout(b, 100);
a
будет, скорее всего, называется первым. Однако я не думаю, что это гарантировано и зависит от механизма JS (независимо от того, использует ли он строгий список FIFO для предстоящих событий, что такое внутреннее разрешение часов и т. Д.)
[*] Вы можете получить похожее с использованием setInterval()
раз.
Какое поведение вы ожидаете? – Sirko
Вы должны были написать «function a() {...}();" (обратите внимание на заключительные круглые скобки)? Ваш код не вызывает функцию перед последней строкой. – tsiki
Я просто хочу знать, почему один звонок ждет другого? Тогда я смогу предсказать поведение. – carousel