callback : 작업 결과를 전달해주기 위해 사용하는 함수
CPS(continuation-passing style)
(연속 전달 방식)비동기 함수 호출시 즉시 제어를 이벤트 루프에 돌려주고, 큐의 새로운 이벤트가 처리되도록 한다.
마이크로 태스크
process.nextTick()
으로 마이크로 태스크로 처리setImmediate()
는 예정된 IO 이후에 실행되므로 해당 위험 Xfunction test(filename, callback) {
process.nextTick(() => callback(cache.get(filename)))
readFile('foo.txt', 'utf8', (err, data) => {
if (err) {
handleError(err)
} else {
processData(data)
}
}
function test(filename, callback) {
readFile(filename, 'utf8', (err, data) => {
let parsed
if (err) {
return callback(err) // 에러 전파 후 빠져나옴
}
try {
parsed = JSON.parse(data)
} catch (err) {
return callback(err) // 에러 전파
}
callback(null, parsed) // 데이터 전파
})
}