예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);