Egg,Controller中回调函数问题
发布于 4 年前 作者 nobody 2266 次浏览 来自 问答

在项目开发中遇到了使用第三方旧库,仅提供回调方式返回结果。现在遇到的问题是:

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 谢谢大佬指点

回到顶部