async这个库里有什么方法可以把前面一个执行的结果传递到后面函数里直接用的吗?
发布于 7 年前 作者 tomoya92 3463 次预览 最后一次回复是 7 年前 来自 问答
我一般用的是
async.series({
method1: function(next){
next(null, 1);
},
method2: function(next) {
next(null, 2);
}
}, function(err, results) {
console.log(results); // 结果是:{method1: 1, method2: 2}
});
现在有个问题,我在查询数据库的时候,method1里查询出来一个对象,然后要在method2方法里用到这个对象的一个变量,如果在不设置全局变量的情况下,async里有其它方法可以实现结果往下传递的吗?
23 回复
2018 年了,怎么还不用原生的 async,而是要用这个库
@atian25 呃,这个。。
假设现在是3年前,碰到这个问题呢 :joy
三年前也有 co 和 babel 了, [哭泣]
就 async 本身的话,不是有很多方法么,仔细看看文档吧,http://caolan.github.io/async/docs.html#compose 之类的
现在是2018年,你既然要改代码,完全可以用最新的async/await去重写一下
好吧, 我错了,听你们的,直接用 async/await :joy
@tomoya92
@chinahsj 谢谢,我试试
@tomoya92 我上面不是给了一个 http://caolan.github.io/async/docs.html#compose 么。。。
我没记错的话,有个方法async.waterfall
来自酷炫的 CNodeMD
@atian25 我错了,我承认没有看这个链接 做了回伸手党 …
@MedusaLeee 是有这个方法
不过它有个不好的地方,就是上面返回参数都要在最后一个方法的 callback(null, arg1, arg2, ‘done’) 给写个,然后在最后才能收集到
你这个可以用原生async/await解决。 async.js的定位和原生async/await语法还是不大一样的,async.js更突出的是流程控制,比如分批循环,取出100条数据执行完再取下100条数据这样的;而async/await只是异步操作的一种同步化写法而已。
@libook 听大伙的,昨天项目已经从express换成了koa 😂
来自 CNode-iOS
@tomoya92 既然都能换 Koa,为啥不直接上 Egg
@tomoya92 既然都能换 Koa,为啥不直接上 nest
可以的
@atian25 不是太喜欢egg
来自 CNode-iOS
@zhulinwei 不折腾了,koa够用了
来自 CNode-iOS
嗯,适合自己的就好
@tomoya92 其实async/await不一定非要换koa,只是个ES语法罢了,Express也可以用。
@libook express里用的话,异常不好处理的。抛异常总是报错。
来自 CNode-iOS