Egg,Controller中回调函数问题
在项目开发中遇到了使用第三方旧库,仅提供回调方式返回结果。现在遇到的问题是:
MyController{
async fn(){
const ctx = this.ctx;
//调用第三方库
api('balabala',function(err,cb){
if(xxx){
}
ctx.body="success"; //前端请求到此Fn时,无返回数据.
})
}
}
请问如何正确使用this.ctx,才能让Controller正确响应请求.
6 回复
一个耗时的回调函数返回时,回调内ctx怎么正常返回?
已解决,原因是对koa不熟悉,koa不能在回调函数内使用ctx.body。需要对回调方法包装一下即可!
可以把这个balabala方法用promise包一层 let xxx = await new Promise((resolve)=>{ api(‘balabala’, function(err, cb) =>{ resolve(xxx) }) }) if (xxx) this.ctx.body = ‘success’
@gzx1996 昨天已正常运行,就是包装个promise。谢谢回复
util.promisify
@atian25 谢谢大佬指点