예1

  • 아래의 코드에서는 'result_async : Promise<pending> 을 반환한다. 그 이유는, testFunc()를 기다려 주지 않기 때문이다. 이러한 실수가 빈번하고 또 자주 까먹는데, 동일한 스코프에서 await하지 않으면 기다려주지 않는다.
    async function testFunc() {
      const test = await syncSetTimeout();
      return test;
    }
    function syncSetTimeout(){
      return new Promise(function(resolve){
          setTimeout(function(){
                  console.log(1);
                  resolve(2);
              }
              , 10000)
      });
    }
    const result_async = testFunc();
    console.log('result_async : ', result_async);
  • 아래의 코드에서는 예상대로 10초후 'result_async : haha을 반환 한다. testFunc() 앞에 await가 있기 때문에 기다린다.
    async function testFunc() {
      const test = await syncSetTimeout();
      return test;
    }
    function syncSetTimeout(){
      return new Promise(function(resolve){
          setTimeout(function(){
                  console.log('1');
                  resolve('2');
              }
              , 10000)
      });
    }
    (async function(){
    const result_sync = await testFunc();
    console.log('result_sync: ', result_sync);
    })();

예2

 class RestApiChannel {
     commonErrorHandle(param: any): void | Promise<void> {
         return;
     }
}

class LineChannel extends RestApiChannel {
    async commonErrorHandle(param: any) {
        await Promise.resolve();
        return Promise.resolve();
    }
}

const lineChannel = new LineChannel();
const returns = lineChannel.commonErrorHandle(1);
console.log(returns);

if (returns instanceof Promise) {
    console.log('returns instanceof Promise is True');
}

console.log(typeof returns);

+ Recent posts