Дополнительно
Метод setTimeout является хорошим решением, чтобы сделать асинхронных функций с помощью JavaScript?
Поиск в интернете о асинхронных функций, я нашел много статей с помощью setTimeout, чтобы сделать эту работу:
window.setTimeout(function() {
console.log("second");
}, 0);
console.log("first");
Выход:
first
second
Это работает, но это лучшая практика?
52
3
функции setTimeout(функция(){...}, 0)
просто очереди код, который будет выполняться один раз в текущем стеке вызовов не завершит выполнение. Это может быть полезно для некоторых вещей]1.Так что да, она'с асинхронной в том, что он нарушает синхронный поток, но это'ов на самом деле не собирается выполнять одновременно/в отдельном потоке. Если вашей целью является фоновая обработка, взгляните на webworkers. Там's также способ использовать фреймы для фоновой обработки.
Обновление:
Для дальнейшего уточнения, там'ы разница между параллелизмом/фоновый режим и асинхронный-Несс. Когда код является асинхронным, что означает, что он вовсе'т выполняются последовательно. Рассмотрим:
в
в
Значение 'ПУ' будете предупреждены, потому что код не выполняются последовательно. В 'бар' значение был назначен асинхронно. Если вам нужно насторожиться значение
фу
, когда, что асинхронные назначение произойдет, использовать обратные вызовы:в
в
Так что да, там's некоторые асинхронные-Несс происходит выше, но это's все происходит в одном потоке, так что нет никаких преимуществ в производительности.
Когда работа занимает много времени, то лучше делать это в фоновом режиме. В большинстве языков это делается путем выполнения операции на новый поток или процесс. В (браузер) для JavaScript, мы не'т иметь возможность создавать новые темы, но можно использовать webworkers и iframes. Поскольку этот код выполняется в фоновом режиме нарушает последовательность вещей, он является асинхронным.
Номер: все справочная/параллельного кода происходит асинхронно, но не всех асинхронного кода происходит одновременно.
См. также: https://stackoverflow.com/questions/11233633/understanding-asynchronous-code-in-laymans-terms
Небольшая поправка к @tybro0103 'ы ответьте, во время исполнения 'предупреждение(ФОО)' значение 'ПУ' не изменится, потому что код был не выполняются последовательно. В 'бар' значение был назначен асинхронно и он будет выполняться только после 100 миллисекунд, что оповещения будут исполнены.
Значение фу остается неизменным, во время выполнения предупреждение линии(фу). И изменятся на время. Проверить @Вишал-Лиа комментарий.
По умолчанию JavaScript-это асинхронный при обнаружении функция async, это очереди, которые функционируют на потом. Но если вы хотите приостановить JS для Вы можете сделать, это использовать обещания Случай 1: выходной привет(не буду ждать через setTimeout) https://jsfiddle.net/shashankgpt270/h0vr53qy/
случай 2: выход done1(будем ждать через setTimeout) https://jsfiddle.net/shashankgpt270/1o79fudt/