English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.js 콜백 함수:비동기성은 Node.js가 인기를 끌게 된 주요 요인 중 하나입니다. 콜백은 함수 비동기성의 구현입니다. 일반적으로 Node.js에서는 대부분의 리소스 처리 함수가 콜백 변형을 가지고 있습니다.
어느 비동기 함수가 리소스의 작업을 호출할 때, 즉시 이 함수의 다음 문장을 수행할 수 있습니다. 리소스의 작업은 병행적으로 시작됩니다. 이는 다음과 같은 도움이 될 수 있습니다. Node.js는 다른 작업을 계속 수행하면서 동시에 이 함수가 리소스를 사용하고 있을 때 Node.js는 콜백 함수를 사용하여 복원합니다. 호출 콜백 함수는 데이터 객체, 결과 객체, 그리고(또는) 작업과 관련된 정보를 포함한 오류 객체를 갖습니다.
블록 함수:비동기 함수와 반대로, 동기 함수는 리소스가 완료될 때까지 실행 블록을 수행합니다. 따라서 동기 함수는 블록 함수라고도 합니다.
Node.js 내포된 콜백 함수 :리소스에 대해 여러 가지 작업을 차례대로 수행해야 하고, 또한 비동기적으로 수행해야 할 경우, 콜백 함수를 서로 내포할 수 있습니다.
지금, 파일(작업) 리소스를 읽을 때, 비동기 함수와 비교하여 세 가지 상황을 볼 수 있습니다.
Node.js 블록 함수 예제
Node.js 콜백 함수 예제
Node.js 내장된 콜백 함수 예제
다음은 sample.txt 파일을 동기적으로 읽는 예제 노드 스크립트입니다.
var fs = require('fs'); // sample.txt 파일을 읽기 var data = fs.readFileSync('sample.txt'); console.log("파일 읽기 완료: ") + new Date().toISOString()); console.log("After readFileSync statement : " + new Date().toISOString());
위 프로그램이 실행될 때
터미널 출력
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-sync.js 파일 읽기 완료: 2017-10-19T12:21:40.103Z After readFileSync statement : 2017-10-19T12:21:40.105Z
after readFileSync 문은 파일을 읽기가 완료된 후에 항상 실행됩니다. fs.readFileSync는 실행 흐름을 블록합니다.
다음은 예제 노드 스크립트입니다. 이 예제 스크립트는 다음과 같이 도움을 받습니다.Node.js 콜백 함수sample.txt 파일을 비동기적으로 읽습니다.
var fs = require('fs'); // sample.txt 파일을 읽기 fs.readFile('sample.txt', // 파일을 읽기 완료될 때 호출되는 콜백 함수 function(err, data) { if (err) throw err; // 데이터는 파일 내용을 포함하는 버퍼입니다. console.log("파일 읽기 완료: ") + new Date().toISOString()); }); console.log("readFile 비동기로 완료된 후: "); + new Date().toISOString());
위 프로그램이 실행될 때
터미널 출력
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-async.js readFile 비동기로 완료된 후: 2017-10-19T12:25:36.982Z 파일 읽기 완료: 2017-10-19T12:25:36.987Z
console.log 이 readFile 비동기 문장 뒤에 실행되더라도 파일을 읽는 작업이 완료되기까지 약5밀리초. file. fs.readFile('sample.txt', 콜백 함수{..})는 파일을 읽는 작업을 수행하는 동안 주 제어 흐름을 블록하지 않고 별도의 프로세스를 시작하여 병행적으로 실행됩니다.
Node.js 내장된 콜백 함수를 사용하여 파일을 이름을 바꾸고 비동기 함수를 통해 지우는 예제를 보여주기 위해 생각했습니다.
var fs = require('fs'); fs.rename('sample.txt', 'sample_old.txt', // 첫 번째 콜백 기능 function (err) { if (err) throw err; console.log('파일이 이름이 바뀌었습니다.'); fs.unlink('sample_old.txt', // 두 번째 콜백 기능 function (err) { if (err) throw err; console.log('파일이 지워졌습니다.'); } ); } );
위의 Node.js 예제를 node와 함께 실행할 때
터미널 출력
arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-nested-callback.js 파일이 이름이 바뀌었습니다. 파일이 지워졌습니다.
이 Node.js 강의 - Node.js 콜백 함수에서는 콜백 함수의 실행流程과 비 블록링 방식을 배웠으며, 내장된 콜백 함수와 예제를 함께 사용하는 방법도 배웠습니다.