co 的使用问题,见代码。
发布于 8 年前 作者 mrlong 3626 次浏览 来自 问答

我的目的是,一个方 法直接返回值,但由于调用数据,则返回是空的。

屏幕快照 2016-09-21 15.44.29.png

结果是这样子的: 1.png

我的目的是将 end 放在最近输出。

8 回复

这是异步!你可以这样Promise.resolve().then(() => co(gen)).then(在这里console)

@ncuzp then() 进入之后,console.log(‘end’) 已执行了。

showuser 整个用co包起来, return co(function*(){具体逻辑})

@o6875461 调用showuser是在ejs 的模板内使用,能这样用吗?? 例如: aaa.html:

<%- showuser(‘xxxxx’) %>

@mrlong 没在ejs中用过,不懂

co不是说在koa2中被抛弃了吗,到底还需不需要学

这个值是从promise对象调用then方法拿到的。 你这里方法需要返回一个promise对象,如下

co(gen); 

改成

return co.wrap(gen);

外部调用方法时

a.showselectuser(1, 'test')
	.then(function(result) {
		// 在这里拿到结果
	})

去学 async/await 然后将 async 换位 co.wrap, 将 await 换为 yield

回到顶部