Легко понять определение "асинхронного события"? [закрытый]

Я много сталкивался с этим термином, и даже после того, как погуглил, все еще не могу понять, что именно это значит. Есть ли какое-то простое для понимания (в идеале с примерами) определение того, что такое асинхронное событие, которое кто-то может предоставить?

спасибо!

11 ответов


без программирования пример:

синхронно Вы хотите пиццу на ужин, и вы из замороженного вида. Поэтому вы должны прекратить играть в WOW, который расстраивает вашу гильдию. Вы идете на кухню, делаете тесто, покрываете его соусом, добавляете сыр и душите его своей любимой беконной начинкой. Вы только что потратили 20 минут своего времени на приготовление пиццы с еще 10 минутами в духовке. Таймер пищит, и ты вытаскиваешь горячий пирог. Ты можешь сесть обратно перед своим компьютер, ешь пиццу и продолжай свой рейд.

асинхронные Вы хотите пиццу на ужин, играя в WOW. Вы открываете окно браузера на своем 5-м мониторе. Вы загружаете сайт пиццы и заказываете дополнительную сырную пиццу с беконом с гарниром из бекона с чесночным соусом. Вы возвращаетесь к своему рейду, и через 20 минут раздается звонок в дверь. Ты получишь пиццу. Вы снова садитесь перед компьютером, едите пиццу и продолжаете свой рейд.

Так в чем разница? В одном случае вы тратите 20-30 минут драгоценного времени WOW, в другом-20 долларов плюс чаевые.


ваша страница доставляется с сервера в клиентский браузер, где-то там, в Интернете. Браузер нарисовал страницу на экране, и кто-то-или кто-то вещь - смотрит на него. Это игра в ожидание. Глаза бегают взад и вперед, вбирая в себя ту или иную деталь быстрыми прыжками, время от времени бросаясь в сторону, подальше от экрана, чтобы исследовать отвлекающие факторы окружающей среды. Такт. Страница светится мягко, пассивно, поскольку пользователь парит неактивно, рука свободно накинута на мышь, шея наклонена вниз, а глаза все более и более сосредоточены на чем-то приглашающем, что может предложить ваша страница.

внезапно, без какого-либо предупреждения, курсор начинает двигаться, когда рука на мыши немного напрягается и начинает подталкивать маленький пластиковый бугорок по шероховатой поверхности стола. По мере движения мыши ее суррогат на экране перемещается в тесном подражании, пасясь мимо интересных изображений и остроумных замечаний в содержимом вашей страницы. В итоге решение принимается, движение приостанавливается, мышца или две слегка сокращаются, и настойчивый палец нажимает кнопку мыши. Микропереключатель в Мыши запускает электронный импульс, и внезапно браузер осознает, что произошло: щелчок мыши.

во всем этом все, что пользователь сделал, глядя на страницу, произошло совершенно непредсказуемым образом для браузера, для любого клиентского кода на вашей веб-странице, для всего, что находится на ваших серверах. Между человеческими действиями не было никакого "времени ожидания". Поэтому действия, передаваемые оборудованием, подключенным к компьютеру пользователя, произошли когда они происходили и не по предсказуемым часам - то есть они случились асинхронно.


подумайте о конце интервью, и они говорят: "Не звоните нам, мы вам позвоним". В этом суть асинхронного события.

обычно вы определяете функции и вызываете функции явно. Ваша программа имеет структуру, где она начинается с строки 1, затем строки 2, и за исключением некоторого условного кода и итераций, вызывающих функций и т. д., простая, вкладыш, одновременная структура.

но в некоторых случаях у вас есть действия, которые будут выполняться по событиям вне прямого контроля программы, вещи, которые приходят извне программы, как события пользовательского интерфейса (пользователь щелкает мышью) или сетевое событие (кто-то пытается подключиться к серверу). Код не генерирует эти события напрямую. Они генерируются вне вашей программы, часто ОС на основе их мониторинга устройств пользовательского интерфейса и других систем. Они называются асинхронными событиями.

просто помните :"не звоните нам, мы позвоним ты"


" в программировании асинхронными событиями являются события, происходящие независимо от основного потока программы. Асинхронные действия-это действия, выполняемые в неблокирующей схеме, позволяющие продолжить обработку основного потока программы."

" с Ajax, веб-приложения могут получение данных с сервера асинхронно в фоновом режиме не мешая дисплей и поведение существующей страницы."

при нажатии кнопки Изменить и сохранить на SO это происходит асинхронно.


асинхронное событие-это событие, которое выполняется вне основного потока приложения.

лучший способ понять это, чтобы сравнить с событиями, которые выполняются синхронно. Наиболее типичным примером может быть загрузка веб-страницы.

когда вы перешли на эту страницу, вы нажали на ссылку и дождались загрузки страницы и не смогли взаимодействовать с этой страницей или использовать ее до завершения загрузки. Для контраста, Если эта страница должна иметь событие AJAX (это асинхронно JavaScript и XML-событие), связанные с некоторыми действиями пользователя, эта страница будет загружать некоторые данные из другого источника асинхронно - параллельно (теоретически) с любыми другими действиями.

пример с двумя синхронными событиями (A и B): Сначала что-то делает. Когда A закончен, B что-то делает.

пример с двумя асинхронными событиями (A и B): Оба A и B делают что-то одновременно, и ни одно событие не ждет другого.


вот пример асинхронной операции в javascript (вам нужно открыть консоль javascript)

console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};

//OUTPUT:
//One!
//Three!
//Two!

вызов console.log('Two!') будет выполняться без блокировки остальной части кода, которая происходит после него.

в реальном сценарии замените setTimeout нажатием кнопки на веб-странице. Ответ на щелчок кнопки произойдет в конечном итоге, без блокировки другого выполнения кода, такого как рендеринг страницы.


проще говоря, это означает то, что происходит после неизвестного количества времени, поэтому не ожидайте немедленных результатов.

например, " Мама, можно мне пять долларов?"

протягивая руку за деньгами, я ожидаю, что она немедленно ответит, дав мне деньги (синхронно).

реалистично, она посмотрит на меня на мгновение или два, а затем решит ответить, когда захочет (асинхронно).


когда встречаются два разных события отдельно друг от друга, поэтому вы не можете сделать

task1
task2

проверить task1 действительно закончил.


асинхронные события-это те события, которые мы не знаем, когда это будет иметь место в будущем, например, когда сервер по какой-либо файл, мы не знаем, когда она выполнила нашу просьбу или UI событий мы не знаем, когда пользователь нажмите на кнопку или другой элемент пользовательского интерфейса, но несмотря на это, другие вещи, на страницы или приложения происходит он не блокирует ничего сказать страницы серым цветом, все элементы интерфейса, пока какой-нибудь файл с сервера не придет или какое-то событие происходит все независимый это сила асинхронных событий, просто сказать независимые события


Синхронный Vs. Асинхронные События

некоторые обработчики событий вызываются автоматически при возникновении события. Эти события называются "синхронными". Пример-DocumentNew. Он вызывается, как только пользователь создает новый документ.

однако некоторые события вызываются вскоре после того, как событие происходит, обычно после короткого периода простоя. Они называются "асинхронными" событиями. Они асинхронны, потому что это будет destabalize Source Insight, если написанный пользователем макрос должен был быть вызван в точное время, когда произошло событие.


Если код синхронно (или sync), это означает, что каждый фрагмент кода выполняется по порядку, последовательно, и следующий фрагмент кода не может выполняться до завершения предыдущего. Большинство кодов Обычно синхронны.

Если код асинхронные (или async), это означает, что код может выполняться отдельно и независимо от другого кода. Если есть асинхронный код в середине группы кода синхронизации, в контексте этого конкретного вопроса асинхронный код будет только запустите, когда его событие запускается, независимо от того, где в коде синхронизации вы его помещаете. Он полностью отделен и не зависит от кода синхронизации и запускается всякий раз, когда его событие говорит, а не только когда выполняется предыдущий фрагмент кода. Некоторые примеры этого могут быть для кода, который выполняется на временном интервале, после успешного сохранения файла, после отправки веб-запроса, когда пользователь нажимает кнопку или после загрузки изображения.