"비동기 이벤트"의 정의를 이해하기 쉽습니까? [닫은]
나는이 용어를 많이 접했고 인터넷 검색 이후에도 그것이 정확히 무엇을 의미하는지 여전히 이해할 수 없습니다. 누군가가 제공 할 수있는 비동기 이벤트가 무엇인지에 대한 이해하기 쉬운 (이상적으로는 예제 포함) 정의가 있습니까?
감사!
비 프로그래밍 예 :
동기식 당신은 저녁으로 피자를 원하고 당신은 냉동 종류가 아닙니다. 그래서 길드를 화나게하는 WOW 플레이를 중단해야합니다. 당신은 부엌에 가서 반죽을 만들고, 소스로 덮고, 치즈를 추가하고, 당신이 가장 좋아하는 베이컨 토핑을 질식시킵니다. 오븐에서 10 분 더 피자를 만드는 데 20 분을 보냈습니다. 타이머가 울리고 뜨거운 파이를 꺼냅니다. 컴퓨터 앞에 앉아서 피자를 먹고 급습을 계속할 수 있습니다.
비동기식 WOW를 플레이하는 동안 저녁 식사로 피자를 원합니다. 5 번째 모니터에서 브라우저 창을 엽니 다. 피자 웹 사이트를로드하고 베이컨 그리스 마늘 소스를 곁들인 치즈 베이컨 피자를 추가로 주문합니다. 습격으로 돌아가서 20 분 후 초인종이 울립니다. 당신은 피자를 얻습니다. 컴퓨터 앞에 앉아 피자를 먹고 급습을 계속합니다.
그렇다면 차이점은 무엇입니까? 한 가지 방법은 귀중한 WOW 시간을 20-30 분 낭비하고 다른 방법은 $ 20와 팁을 낭비하는 것입니다.
페이지는 서버에서 인터넷 어딘가에있는 클라이언트 브라우저로 전달됩니다. 브라우저가 화면에 페이지를 그렸고, 누군가 또는 어떤 것이 그 페이지를 보고 있습니다. 기다리는 게임입니다. 눈은 앞뒤로 이동하여 빠른 점프로이 부분이나 그 세부 사항을 받아들이고 화면에서 멀어지면서 주변 환경의 산만 함을 조사합니다. 시계가 똑딱. 사용자가 비활성 상태로 마우스를 움직이면 페이지가 부드럽고 수동적으로 빛납니다. 손은 마우스 위로 느슨하게 드리워지고, 목은 아래로 구부러지고, 페이지가 제공해야하는 매력적인 무언가에 점점 더 집중하게됩니다.
갑자기 아무런 경고도없이 마우스의 손이 약간 뻣뻣 해지고 테이블의 거친 표면 위의 작은 플라스틱 범프를 찌르기 시작하면서 커서가 움직이기 시작합니다. 마우스가 움직이면 화면의 대리자가 페이지 내용에있는 흥미로운 이미지와 재치있는 말을 지나쳐 가까이 모방하여 움직입니다. 결국 결정이 내려지고, 움직임이 멈추고, 근육 하나 또는 둘이 약간 수축되고, 끈질긴 손가락으로 마우스 버튼을 눌렀습니다. 마우스의 마이크로 스위치는 전자적 충동을 유발하고 갑자기 브라우저가 무슨 일이 일어 났는지 인식하게됩니다. 마우스 클릭.
이 모든 것에서 사용자가 페이지를 응시하는 동안 수행 한 모든 작업은 브라우저, 웹 페이지의 클라이언트 코드, 서버에 상주하는 모든 것에 대해 전혀 예측할 수없는 방식으로 발생했습니다. 인간 행동 사이에는 알 수있는 "대기 시간"이 없었습니다. 따라서 사용자의 컴퓨터에 연결된 장비에 의해 전송 된 동작 은 예측 가능한 시계에 따라 발생 하지 않고 발생 했을 때 발생 했습니다. 즉, 비동기 적으로 발생했습니다 .
인터뷰가 끝날 때를 생각하면 그들은 "전화하지 마세요. 전화하겠습니다"라고 말합니다. 이것이 비동기 이벤트의 본질입니다.
일반적으로 함수를 정의하고 명시 적으로 함수를 호출합니다. 프로그램은 1 행에서 시작하여 2 행으로 시작하는 구조를 가지고 있으며 일부 조건부 코드 및 반복, 함수 호출 등을 제외하고는 단순하고 라이너 동기식 구조가 있습니다.
그러나 어떤 경우에는 프로그램의 직접적인 제어를 벗어난 이벤트에 의해 트리거되는 작업이 있습니다. 사용자 인터페이스 이벤트 (사용자가 마우스를 클릭) 또는 네트워크 이벤트 (누군가가 귀하의 서버). 코드는 이러한 이벤트를 직접 생성하지 않습니다. 이들은 사용자 인터페이스 장치 및 기타 시스템의 모니터링을 기반으로하는 OS에서 프로그램 외부에서 생성되는 경우가 많습니다. 이를 비동기 이벤트라고합니다.
"전화하지 마세요. 전화 할게요"
"프로그래밍에서 비동기 이벤트는 기본 프로그램 흐름과 독립적으로 발생하는 이벤트입니다. 비동기 작업은 비 차단 방식으로 실행되는 작업으로, 기본 프로그램 흐름이 처리를 계속할 수 있도록합니다."
"Ajax를 사용하면 웹 애플리케이션이 기존 페이지의 표시 및 동작을 방해하지 않고 백그라운드에서 비동기 적으로 서버에서 데이터를 검색 할 수 있습니다."
편집 및 저장을 클릭하면 비동기 적으로 발생합니다.
비동기 이벤트는 애플리케이션의 기본 스레드 외부에서 실행되는 이벤트입니다.
이해하는 가장 좋은 방법은 동 기적으로 실행되는 이벤트와 비교하는 것입니다. 가장 일반적인 예는 웹 페이지를로드하는 것입니다.
이 페이지로 이동했을 때 링크를 클릭하고 페이지가로드 될 때까지 기다렸으며로드가 완료 될 때까지이 페이지와 상호 작용하거나 사용할 수 없었습니다. 대조적으로이 페이지에 일부 사용자 작업과 연결된 AJAX 이벤트 (즉, 비동기 JavaScript 및 XML 이벤트)가있는 경우이 페이지는 다른 작업이 진행되는 동안 병렬로 (이론적으로) 다른 소스에서 일부 데이터를 비동기 적으로로드합니다.
두 개의 동기 이벤트 (A 및 B)가있는 예 : 첫 번째 A는 작업을 수행합니다. A가 끝나면 B는 뭔가를합니다.
두 개의 비동기 이벤트 (A 및 B)가있는 예 : A와 B 모두 동시에 작업을 수행하고 두 이벤트 모두 다른 이벤트를 기다리지 않습니다.
다음은 자바 스크립트에서 비동기 작업의 예입니다 (JavaScript 콘솔을 열어야 함).
console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};
//OUTPUT:
//One!
//Three!
//Two!
The call to console.log('Two!')
will be executed without blocking the rest of the code that happens after it.
In a real scenario, replace setTimeout with someone clicking a button on a webpage. The response to the button click will happen eventually, without blocking other code execution such as page rendering.
Simply put, it means something that occurs after an unknown amount of time, so don't expect immediate results.
For example, "Mom, can I have five dollars?"
Putting my hand out for money is me expecting her to immediately respond by giving me money (synchronous).
Realistically, she will look at me for a moment or two, and then decide to respond when she wants to (asynchronous).
When two different events occur separately from each other, so you can't do
task1
task2
without checking that task1
really finished.
Asynchronous events are those events that we don't know when it will be occurred in the future for example when server is requested for some file we don't know when it will fulfilled our request or UI events we don't know when user will click on a button or other UI element, but despite of it other things on page or application is happening it does not block anything say the page greyed out all UI until some file from server is not coming or some event is happening all things are independent this is the power of asynchronous events, simply say independent events
Synchronous Vs. Asynchronous Events
Some event handlers are called immediately when the event occurs. These are called ‘synchronous’ events. An example is DocumentNew. It gets called as soon as the user creates a new document.
However, some events are called shortly after the event occurs, usually after a short amount of idle time. These are called ‘asynchronous’ events. They are asynchronous because it would destabalize Source Insight if a user-written macro were to be called at the exact time the event occured.
If code is synchronous (or sync), it means each piece of code runs in order, sequentially, and the next piece of code cannot run until the previous is completed. Most code is typically synchronous.
If code is asynchronous (or async), it means that code can run separately and independently of other code. If there is async code in the middle of a bunch of sync code, under the context of this particular question, the async code will only run when its event is triggered, regardless of where in the sync code you put it. It is completely separate and independent of the sync code and runs whenever its event says to, not just when the previous piece of code is done running. Some examples of this would be for code that runs on a timed interval, after a file is successfully saved, after a web request is sent, when the user clicks a button, or after an image loads.
참고URL : https://stackoverflow.com/questions/4559032/easy-to-understand-definition-of-asynchronous-event
'developer tip' 카테고리의 다른 글
iPhone에서 URL을 확인하는 방법 (0) | 2020.09.08 |
---|---|
iOS 7-기본 뷰 컨트롤러 인스턴스화 실패 (0) | 2020.09.08 |
가장 유용한 R 트릭은 무엇입니까? (0) | 2020.09.08 |
Graphviz를 사용할 때 가장자리에 맞춰 레이블 표시 (0) | 2020.09.08 |
Open ONVIF (Network Video Interface Forum) 기기에서 녹화 문제 (0) | 2020.09.08 |