JavaScript

Асинхронное и синхронное какая разница между ними?

Асинхронная функция стартует в отдельном потоке, а сама программа продолжается, как ни в чём не бывало. Очевидно, чтобы вернуть результат, должно сработать какое-то событие.
AO
Azer Osmanov
26 551
Лучший ответ
Синхронное: весь код выполняется последовательно, как написан. Каждое следующее действие выполняется только после того, как полностью завершится предыдущее действие.

Асинхронное: происходит запуск действия, но основной код не дожидается окончания его выполнения, а продолжает свою работу. При запуске асинхронного действия ему передаётся callback-функция, которая автоматически вызывается при завершении действия.

Ситуации, когда внутри асинхронных действия вызываются другие асинхронные действия приводят в появлению крайне запутанного и хрупкого кода, для которого есть специальный термин: Callback Hell. Чтобы решить эту проблему, придумали способы записи асинхронного кода, который выглядит как синхронный и не требует вложенной записи асинхронных вызовов: это обещания (промисы, promise) и async/await.

P.S. Асинхронными являются AJAX-запросы к серверу, запуск кода по таймеру (setTimeout и setInterval) и т.п.
Пример асинхронного программирования в JavaScript это промисы.
 doSomeThing().Then(o => console.log(o)); 
const i = 100;
Функция doSomeThing это асинхронная операция, которая выполняется асинхронно.
Then выполняется после того, как функция завершится
Следующая строчка кода const i = 100 не ожидает завершения функции и выполняется сразу же.

Также при асинхронном программировании можно применять async await.
 const doSomeThingPromise = doSomeThing(); 
const i = 100;
const o = await doSomeThingPromise;
console.log(o);
Здесь await тоже ожидает завершения функции doSomeThing.

Другой пример асинхронного программирования, это Event'ы, события. Например, когда ты нажимаешь на кнопку. Асинхронное выполнение кода не равно параллельное. В однопоточном режиме, а в JavaScript многое выполняется в однопоточном режиме, код тоже выполняется асинхронно, даже если поочередно.
Плавание?
Андрей Мезер
Андрей Мезер
87 197
Ну обычно выполняешь функцию и она сразу возвращает значение его можно использовать уже в следующей строчке кода а с асинхроном не так. Там запускаешь функцию а значение вернётся значительно позже (например когда сервер вернёт результат или пользователь закроет окно ) по этому в следующей строчке после вызова этой функции значение которое она возвращает будет пустым а заполнится оно только тогда когда выполнится асинхронная функция чтобы код ждал выполнения асинхронной функции в месте ее вызова можно написать await или .then () или передать колбек который обычно асинхронные функции принимают по умолчанию и возвращают результат туда
в рассонхрицизации
Азамат Куштаев
Азамат Куштаев
48 291
Синхронное - это синхронное, а асинхронное - это не синхронное