web/javaScript

nodejs 비동기 프로그래밍을 위한 deferred

반응형

node.js에서 비동기 프로그래밍을 위해서 사용할 수 있는 deferred 라이브러리를 정리해보자.


우선 deferred의 경우에는 이전글에 작성했던 Promise와 동일한 개념이다. (https://wedul.tistory.com/508) promise와 마찬가지로 deferred는 비동기로 작업을 진행하고 비동기 처리가 완료되고 resolve, reject 메소드를 실행해서 비동기 동작 이후에 결과를 전달 할 수 있다.


우선 필요한 라이브러리를 다운로드 받아보자. 

https://www.npmjs.com/package/deferred

1
npm i deferred
cs


그리고 라이브러리 예제에 나와있는대로 deferred 라이브러리를 사용해서 비동기 프로그램을 실행시켜보면 간단하게 promise와 동일 한 방식으로 진행할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'use strict';
 
const deferred = require('deferred');
const promiseTest = require('./promise-test');
const deferredTest = module.exports;
 
deferredTest.deferTest = () => {
  return () => {
    const def = deferred();
 
    setTimeout(async () => {
      try {
        let dd = await promiseTest.proTest(true);
 
        if (dd.message == 'test') {
          def.reject('Error');
        } else {
          def.resolve(dd);
        }
      } catch (e) {
        def.reject(e);
      }
    }, 1000);
 
    return def.promise;
  };
};
 
 
 
// 테스트 
const deferredTest = require('../../lib/libraryTest/deferred-test');
 
 it('deferred Test', async () => {
    try {
      let dd = await deferredTest.deferTest()();
      console.log(dd);
    } catch (e) {
      console.log(e);
    }
 
  });
cs


반응형