setInterval(..., 0)
может использоваться для передачи управления пользовательскому интерфейсу браузера, чтобы предотвратить его зависание, если выполнение кода занимает много времени.
В этом случае that.publish
завершится почти сразу, прежде чем будет выполнен любой обратный вызов.После этого каждый обратный вызов будет выполняться «в фоновом режиме» - он будет помещен в цикл обработки событий, и каждый из них будет отдан браузеру для выполнения своей задачи до выполнения следующего обратного вызова.идея в обработке событий, потому что вы не хотите, чтобы обработка событий замораживала браузер, даже если их много или для их завершения требуется много времени.
О документации - как указано, это неправильно,Javascript является однопоточным.Но если бы вам пришлось вызывать publish()
несколько раз подряд, это правда, что все эти вызовы завершатся до того, как будут выполнены какие-либо обратные вызовы, из-за setTimeout
.Может быть, это то, что означает документация?