티스토리 뷰

Javascript

비동기 프로그래밍

양억 2018. 7. 3. 22:40

Asynchronous programming

callback

123456789asyncTask1(data, function onTask1Done (result1) {
    asyncTask2(result1, function onTask2Done (result2) {
        asyncTask3(result2, function onTask3Done (result3) {
            asyncTask4(result3, function onTask4Done (result4) {
                console.log(`All done! Result is ${result4}`);
            })
        })
    })
});

논리적으로 비동그 프로그래밍을 완벽히 구현했지만, 콜백지옥.

promise

12345678const makeRequest = () => 
    getJSON()
    .then(data => {
        console.log(data);
        return 'done';
    })

makeRequest();

async/await

코드양을 줄일 수 있다. .then을 추가할 필요없고, 비동기함수를 따로 만들 필요가 없다. 따라서 함수에 따라오는 data라는 매개변수도 선언할 필요가 없어졌다. 동기, 비동기 에러를 try/catch를 통해 해결할 수 있다.

예제1

123456const makeRequest = async () => {
    console.log(await getJSON());
    return 'done';
}

makeRequest();

모든 async함수는 promise를 return한다. promise가 함수로부터 return할 값을 resolve한다.

예제2

12345678910let fs = require('fs');

async function writeMergedFile () {
    let fileA = await fs.readFile('fileA.txt', 'utf8');
    let fileB = await fs.readFile('fileB.txt', 'utf8');

    await fs.writeFile('merged.txt', fileA+fileB, 'utf8');

    console.log('All done!')
}


'Javascript' 카테고리의 다른 글

slice() 메서드  (0) 2018.07.03
join() 메서드  (0) 2018.07.03
concat() 메서드  (0) 2018.07.03
Array.isArray() 메서드  (0) 2018.06.29
배열처리 정리기법  (0) 2018.06.29
Posted 0 comments
LATEST POST
TAG more
VISITORS
YESTERDAY
TODAY
TOTAL