CNode

Egg,Controller中回调函数问题

问答
Nnobody发布于6 年前最后回复6 年前6 回复3310 浏览0 收藏

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

MyController{
	async fn(){
		const ctx = this.ctx;
		//调用第三方库
		api('balabala',function(err,cb){
			if(xxx){
			}
			ctx.body="success"; //前端请求到此Fn时,无返回数据.
		})
	}
}

请问如何正确使用this.ctx,才能让Controller正确响应请求.

查看回复

回复 (6)

N
nobody#1·6 年前
引用 atian25util.promisify

@atian25 谢谢大佬指点

N
nobody#2·6 年前

一个耗时的回调函数返回时,回调内ctx怎么正常返回?

N
nobody#3·6 年前

已解决,原因是对koa不熟悉,koa不能在回调函数内使用ctx.body。需要对回调方法包装一下即可!

G
gzx1996#4·6 年前

可以把这个balabala方法用promise包一层 let xxx = await new Promise((resolve)=>{ api('balabala', function(err, cb) =>{ resolve(xxx) }) }) if (xxx) this.ctx.body = 'success'

N
nobody#5·6 年前
A
atian25#6·6 年前

util.promisify

参与回复
登录后即可参与回复。登录