Node.js 콜백 함수
Node.js 비동기 프로그래밍의 직접적인 표현은 콜백입니다.
비동기 프로그래밍은 콜백에 의존하지만 콜백을 사용한 후에 프로그램이 비동기화된다고 말할 수는 없습니다.
콜백 함수는 작업 완료 후 호출됩니다. Node는 많은 콜백 함수를 사용합니다. 모든 Node API는 콜백 함수를 지원합니다.
예를 들어, 다른 명령을 실행하는 동안 파일을 읽을 수 있습니다. 파일 읽기가 완료된 후 콜백 함수의 매개변수로 파일 내용을 반환합니다. 이렇게 하면 코드를 실행하는 동안 파일 I/O 작업을 차단하거나 기다리지 않습니다. 이는 Node.js의 성능을 크게 향상시키고 많은 수의 동시 요청을 처리할 수 있습니다.
차단 코드 예시
다음 내용으로 input.txt 파일을 생성합니다.
php中文网官网地址:www.php.cn
main.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束!");
위 코드 실행 결과는 다음과 같습니다.
$ node main.js php中文网官网地址:www.php.cn 程序执行结束!
비차단 코드 예시
Creation 파일 input.txt, 내용은 다음과 같습니다.
php中文网官网地址:www.php.cn
main.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString()); }); console.log("程序执行结束!");
위 코드 실행 결과는 다음과 같습니다.
$ node main.js 程序执行结束! php中文网官网地址:www.php.cn
위의 두 예에서 우리는 차단 통화와 비차단 통화의 차이점을 이해합니다. 첫 번째 인스턴스는 파일을 읽은 후 프로그램 실행을 완료합니다. 두 번째 예에서는 파일을 읽을 때까지 기다릴 필요가 없으므로 파일을 읽는 동시에 다음 코드를 실행할 수 있어 프로그램 성능이 크게 향상됩니다.
따라서 블로킹은 순서대로 실행되지만 비블로킹은 순서대로 실행될 필요가 없으므로 콜백 함수의 매개변수 처리가 필요한 경우 콜백 함수에 작성해야 합니다.