callback 함수를 asyn/await 로 변경하기
callback 을 Promise 로 변경하면 된다.아래와 같은 callback 을 사용하는 함수가 있다고 하자.
requestTest(param1, param2, function(result){ return 'success'; }, function(err){ return 'err'; });
await
키워드는 Promise 가 끝날때까지 기다리고, return 을 주게 된다.그러므로 우리는 Promise 로 만들면 된다. Promise 는 아래와 같은 모습을 갖고 있다.
new Promise(function(resolve, reject){})
우리가 할 일은 callback 부분에서 ‘성공’, ‘실패’ 부분에 Promise 의 resolve, reject 부분만 맞춰서 실행해 주게 만들면 된다.
new Promise(function(resolve, reject){ ... resolve(...); ... reject(...); })
그래서 아래처럼 변경해 주면 된다.
resolve(result);
에서 보내는 result 가 await 함수의 return 값이 된다. resovle
를 호출하지 않으면 await 으로 호출후 다시 return 돼서 처리되지 못한다. (yield 를 호출하지 않는듯)const param1, param2; // ... const promise = await new Promise(function(resolve, reject){ requestTest(param1, param2, function(result){ resolve(result); // 여기서 보내는 result 가 await 함수의 return 값이 된다. return; }, function(err){ reject(err); return; } ); })
댓글 없음:
댓글 쓰기