본문 바로가기
Programming/Node.js

Node.js에서 callback function을 사용하는 방법

by 혀코 2020. 1. 6.

안녕하세요. 혀코입니다.

오늘은 Node.js에서 callback function을 사용하는 방법에 대해서 알아보겠습니다.

app.js를 다음과 같이 작성합니다.

setTimeout(() => {
    console.log('Two seconds are up')
}, 2000)

const names = ['Andrew', 'Jen', 'Jess']

const shortNames = names.filter((name) => {
    return name.length <= 4
})

const geocode = (address, callback) => {
    const data = {
        latitude: 0,
        longitude: 0
    }
    
    return data
}

const data = geocode('Philadelphia')
console.log(data)

다음 코드를 실행하면, 

$ node app.js

geocode 함수 부분이 asyncronous 형식의 비동기 형식이 아닌 일반적인 형식으로 다음과 같이 결과를 표시합니다.

{ latitude: 0, longitude: 0 }
Two seconds are up

 

이번에는 geocode 함수 부분이 asyncronous 형식의 비동기 형식으로 쓰이도록 구현해 보겠습니다.

setTimeout(() => {
    console.log('Two seconds are up')
}, 2000)

const names = ['Andrew', 'Jen', 'Jess']

const shortNames = names.filter((name) => {
    return name.length <= 4
})

const geocode = (address, callback) => {
    setTimeout(() => {
        const data =  {
            latitude: 0,
            longitude: 0
        }
        return data
    }, 2000)
}

const data = geocode('Philadelphia')
console.log(data)

위의 코드는 다음과 같은 결과를 표시합니다.

Undefined
Two seconds are up

여기서 setTimeout을 사용해서 비동기 형식으로 구현해 봤지만, 정확한 데이터를 구하지 못했습니다. 이유는 getocode 함수가 비동기 형식으로 쓰여진 것이 아니라 setTimeout부분에서만 비동기 형식으로 사용되었기 때문에 geocode 함수가 끝나지 못한채로 data를 리턴하기 때문입니다. 그래서 callback function이 필요합니다. 

위의 코드를 수정해 보겠습니다.

setTimeout(() => {
    console.log('Two seconds are up')
}, 2000)

const names = ['Andrew', 'Jen', 'Jess']

const shortNames = names.filter((name) => {
    return name.length <= 4
})

const geocode = (address, callback) => {
    setTimeout(() => {
        const data =  {
            latitude: 0,
            longitude: 0
        }
        callback(data)
    }, 2000)
}

geocode('Philadelphia', (data) => {
    console.log(data)
})

여기서 비동기 형식으로 callback function을 구현했기 때문에 다음과 같은 결과를 표시합니다.

Two seconds are up
{ latitude: 0, longitude: 0 }

 

 

이번에는 다음 코드를 callback function으로 나타내는 방법에 대해서 알아보겠습니다.

add(1, 4, (sum) => {
    console.log(sum)
}

callback function을 사용해서 결과가 5가 나오도록 작성해 보겠습니다.

const add = (a, b, callback) => {
    setTimeout(() => {
        callback(a+b)
    }, 2000)
}

add(1, 4, (sum) => {
    console.log(sum)
}

 

 

이렇게 Node.js에서 callback function을 사용하는 방법에 대해서 알아봤습니다.

유용하셨다면, 공감과 구독 부탁 드립니다.

감사합니다.

댓글