English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS 기본 강의

NodeJS Express.js

NodeJS 버퍼&URL;

NodeJS MySql

NodeJS MongoDB

NodeJS 파일(FS)

NodeJS 다른

Node.js 콜백 함수

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 콜백 함수 예제

다음은 예제 노드 스크립트입니다. 이 예제 스크립트는 다음과 같이 도움을 받습니다.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 내장된 콜백 함수 예제

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 콜백 함수에서는 콜백 함수의 실행流程과 비 블록링 방식을 배웠으며, 내장된 콜백 함수와 예제를 함께 사용하는 방법도 배웠습니다.