간단한 해결책이없고 래핑 return new Promise(...)
이 흐릿하지만 나는 사용하여 괜찮은 해결 방법을 찾았습니다 util.promisify
(실제로는 좀 더 멋지게 보입니다).
function voidFunction(someArgs, callback) {
api.onActionwhichTakesTime(someMoreArgs, (response_we_need) => {
callback(null, response_we_need);
});
}
위의 함수는 아직 아무것도 반환하지 않습니다. 다음 을 수행 Promise
하여 response
전달 된 a 를 반환하도록 할 수 있습니다 callback
.
const util = require('util');
const asyncFunction = util.promisify(voidFunction);
이제 우리는 실제로 수 await
을 callback
.
async function test() {
return await asyncFunction(args);
}
사용할 때 몇 가지 규칙 util.promisify
- 은 (
callback
는) 될 함수의 마지막 인수 여야합니다.promisify
- 예상 콜백은 다음 형식이어야합니다.
(err, res) => {...}
재밌는 점은 우리가 callback
실제로 무엇인지 구체적으로 쓸 필요가 없다는 것입니다.