node.js 이벤트 순환 자세히 알 아 보기
Node.js 는 거의 모든 API 가 리 셋 함 수 를 지원 합 니 다.
Node.js 는 기본적으로 모든 사건 체 제 는 디자인 모델 에서 관찰자 모델 로 이 루어 진다.
Node.js 단일 스 레 드 는 while(true)의 이벤트 순환 에 들 어 가 는 것 과 유사 합 니 다.이벤트 관찰자 가 종료 되 지 않 을 때 까지 모든 비동기 사건 은 하나의 이벤트 관찰 자 를 생 성 합 니 다.이벤트 가 발생 하면 이 반전 함 수 를 호출 합 니 다.
이벤트 드라이버
Node.js 는 이벤트 구동 모델 을 사용 하여 웹 서버 가 요청 을 받 으 면 닫 고 처리 한 다음 다음 다음 웹 요청 을 서비스 합 니 다.
이 요청 이 완료 되면 처리 대기 열 에 다시 놓 여 있 습 니 다.대기 열 에 도착 하면 이 결 과 는 사용자 에 게 되 돌아 갑 니 다.
이 모델 은 매우 효율 적 이 고 확장 성 이 매우 강하 다.웹 서버 가 요청 을 받 아들 여 읽 기와 쓰기 동작 을 기다 리 지 않 기 때문이다.(이것 은 비 차단 식 IO 또는 이벤트 구동 IO 라 고도 부른다)
이벤트 구동 모델 에 서 는 이벤트 가 감지 되 었 을 때 리 셋 함 수 를 실행 하 는 주 순환 을 생 성 합 니 다.
전체 사건 구동 의 절 차 는 바로 이렇게 실현 되 고 매우 간결 하 다.관찰자 모드 와 유사 합 니 다.이 벤트 는 하나의 주제(Subject)에 해당 하 며,이 이벤트 에 등 록 된 모든 처리 함 수 는 관찰자(Observer)에 해당 합 니 다.
Node.js 는 여러 개의 내 장 된 이벤트 가 있 습 니 다.이벤트 모듈 을 도입 하고 EventEmitter 류 를 통 해 이 벤트 를 연결 하고 감청 할 수 있 습 니 다.다음 과 같은 실례 가 있 습 니 다.
// events
var events = require('events');
// eventEmitter
var eventEmitter = new events.EventEmitter();
다음 프로그램 바 인 딩 이벤트 처리 프로그램:
//
eventEmitter.on('eventName', eventHandler);
우 리 는 프로그램 을 통 해 사건 을 촉발 할 수 있다.
//
eventEmitter.emit('eventName');
실례main.js 파일 을 만 듭 니 다.코드 는 다음 과 같 습 니 다.
// events
var events = require('events');
// eventEmitter
var eventEmitter = new events.EventEmitter();
//
var connectHandler = function connected() {
console.log(' 。');
// data_received
eventEmitter.emit('data_received');
}
// connection
eventEmitter.on('connection', connectHandler);
// data_received
eventEmitter.on('data_received', function(){
console.log(' 。');
});
// connection
eventEmitter.emit('connection');
console.log(" 。");
다음은 상기 코드 를 실행 합 니 다.$ node main.js
연결 이 성공 하 였 습 니 다.
데이터 수신 성공.
프로그램 실행 완료.
Node 응용 프로그램 은 어떻게 작 동 합 니까?
Node 응용 프로그램 에서 비동기 작업 을 수행 하 는 함 수 는 리 셋 함 수 를 마지막 매개 변수 로 하고 리 셋 함 수 는 오류 대상 을 첫 번 째 매개 변수 로 받 습 니 다.
다음은 앞의 인 스 턴 스 를 다시 보고 input.txt 를 만 듭 니 다.파일 내용 은 다음 과 같 습 니 다.
우리
main.js 파일 을 만 듭 니 다.코드 는 다음 과 같 습 니 다.
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err){
console.log(err.stack);
return;
}
console.log(data.toString());
});
console.log(" ");
이상 프로그램 에서 fs.readFile()은 비동기 함수 로 파일 을 읽 는 데 사 용 됩 니 다.파일 을 읽 는 중 오류 가 발생 하면 err 대상 은 오류 정 보 를 출력 합 니 다.오류 가 발생 하지 않 으 면 readFile 은 err 대상 의 출력 을 건 너 뛰 고 파일 내용 은 리 셋 함수 로 출력 합 니 다.
상기 코드 를 실행 합 니 다.실행 결 과 는 다음 과 같 습 니 다.
프로그램 실행 완료
우리
다음은 input.txt 파일 을 삭제 합 니 다.실행 결 과 는 다음 과 같 습 니 다.
프로그램 실행 완료
Error: ENOENT, open 'input.txt'
파일 input.txt 가 존재 하지 않 기 때문에 오류 정 보 를 출력 하 였 습 니 다.
이상 은 node.js 이벤트 순환 에 대한 상세 한 내용 입 니 다.node.js 이벤트 순환 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express + AWS S3 이미지 업로드하기웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.