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