JavaScript асинхронный механизм

Предупреждение: Данная статья является блоггером оригинал статьи, не могут быть воспроизведены без блоггеров допускается. https://blog.csdn.net/u012193330/article/details/60752142

Посмотрите на два фрагмента кода JS

for  (var i = 1; i <= 5; i++) {
      setTimeout(function(){
          console.log(i);
      }, 0);
}

Результат: Выход 5 6

var start = new Date;
setTimeout(function(){
    var end = new Date;
    console.log('Time elapsed:', end - start, 'ms');
}, 500);
while (new Date - start < 1000) {};

Результаты: Время, прошедшее 1020ms (разные машины имеют разные значения, но будет немного больше, чем 1000)

Причина, почему приведенные выше результаты, в результате SetTimeout выполняется асинхронно, Js специфический асинхронный механизм, как показано ниже:

Написать фотографии, описанные здесь

Асинхронное выполнение является наиболее важной характеристикой JavaScript, он работает: JS исполнение двигатель только один основная логика выполнения коды нити, встречает код задачи должен быть выполнен асинхронно, добавляются очередь событий. Когда основной поток находится в режиме ожидания, опрашивает задача очереди событий может быть выполнена, прикрепить его к основному потоку выполнения, и так далее, пока событие не очереди неисполняемых задач.

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

Написать фотографии, описанные здесь

передача Http к потоку в качестве примера:
Наиболее распространенный являются вопросами JS кода Ajax запрос, то , что передается в браузере HTTP поток для обработки, и когда возвращаемые данные фоновых, HTTP нити , чтобы создать хорошие данные готовы в очереди событий событие, выполнение JS в ожидании главного потока находится в режиме ожидания.
Другим примером является наш общий щелчок, события мыши, событийной GUI поток генерируется. Когда пользователь нажимает на странице, GUI поток будет генерировать событие инициирует событие щелчка в очереди событий, ожидая , чтобы быть выполнена , когда основной поток JS вхолостую.

рекомендация

отblog.csdn.net/u012193330/article/details/60752142