Node.js
콜백 지옥 피하기
수색…
비동기 모듈
소스는 GitHub에서 다운로드 할 수 있습니다. 또는 npm을 사용하여 설치할 수 있습니다.
$ npm install --save async
Bower를 사용하는 것은 물론 :
$ bower install async
예:
var async = require("async");
async.parallel([
function(callback) { ... },
function(callback) { ... }
], function(err, results) {
// optional callback
});
비동기 모듈
고맙게도 Async.js와 같은 라이브러리는 문제를 해결하려고 시도합니다. Async는 코드 위에 함수의 얇은 레이어를 추가하지만 콜백 중첩을 피함으로써 복잡성을 크게 줄일 수 있습니다.
Series, Parallel, Waterfall 등과 같이 다양한 상황에서 사용할 수있는 많은 헬퍼 메소드가 Async에 존재합니다. 각 함수는 특정 유스 케이스를 가지고 있으므로 어떤 상황에서 어떤 것이 도움이되는지 배우려면 시간이 필요합니다.
Async만큼이나 완벽하지는 않습니다. 시리즈, 평행, 영원히 등을 결합하여 매우 쉽게 수행 할 수 있습니다. 어느 지점에서 당신은 지저분한 코드로 시작했는지 바로 알 수 있습니다. 조기에 최적화하지 않도록주의하십시오. 몇 가지 비동기 작업이 병렬로 실행될 수 있다고해서 반드시 필요한 것은 아닙니다. 실제로 Node는 단일 스레드이므로 Async를 사용하여 병렬로 작업을 실행하면 성능이 거의 또는 전혀 향상되지 않습니다.
소스는 https://github.com/caolan/async 에서 다운로드 할 수 있습니다. 또는 npm을 사용하여 설치할 수 있습니다.
$ npm install --save async
Bower를 사용하는 것은 물론 :
$ bower install async
비동기식 폭포 예제 :
var fs = require('fs');
var async = require('async');
var myFile = '/tmp/test';
async.waterfall([
function(callback) {
fs.readFile(myFile, 'utf8', callback);
},
function(txt, callback) {
txt = txt + '\nAppended something!';
fs.writeFile(myFile, txt, callback);
}
], function (err, result) {
if(err) return console.log(err);
console.log('Appended text!');
});