现有两个任务,第一个在数据库查询,返回如果没有结果就进行第二个任务新建,如果有结果就结束任务。如果用async的话怎么实现? 原来用if else挺简单的,就是想如果用async模块的话该怎么写
我觉得 async 不是很适合这个任务,用 eventproxy 吧。https://github.com/JacksonTian/eventproxy
我喜欢 promise + co 大法
同意一楼的建议。async 不好用,eventproxy 对于代码的耦合度非常低。 不过,我看楼主的需求,直接 在第一次 查询的回调函数 里 进行if 判断不就得了?
@359056163 嗯,原来是这样写的,不过后面还有任务,后面几个任务不用判断直接用的async,组长检查代码让我把第一个任务也加到async里,实在不知道怎么合适地加进去。。。
两个任务自己写就可以了
一定用async的话,就用它的waterfall方法,然后再在里面自行判断一下? 自豪地采用 CNodeJS ionic
@DavidCai1993 自行判断后怎么跳出不执行后面的任务
@ilovelll 判断后如果数据查到了,就不再继续查,直接再不查询并把这一步的结果写成null,然后在最后的回调函数里直接拿结果数组里那个不为null的值? 自豪地采用 CNodeJS ionic
https://github.com/hezedu/sas/blob/master/demo/readOrCreate.js 楼主可以看看我写的这个。
@DavidCai1993 第三句话没有听懂
好像是这么写的吧: async.waterfall([function(cb) {col.findOne({_id: oi}, cb);}, function (r, cb) {if ( r ) return cb(); col.insertOne(obj, cb)}], function (err) {});
问题已经搞定,谢谢各位,附伪代码:
async.auto({ isExist: function (callback) { model.getData(callback) }, insert: ['isExist', function (callback, results) { console.log(results) if (results.isExist.length==0) {//判断是否存在 model.saveData(callback); } else{ callback && callback(null, results) } }], update: ['insert', function (callback) { model.updateData(callback); }] }, function (err, resultss) { callback && callback(err, resultss) })
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
我觉得 async 不是很适合这个任务,用 eventproxy 吧。https://github.com/JacksonTian/eventproxy
我喜欢 promise + co 大法
同意一楼的建议。async 不好用,eventproxy 对于代码的耦合度非常低。 不过,我看楼主的需求,直接 在第一次 查询的回调函数 里 进行if 判断不就得了?
@359056163 嗯,原来是这样写的,不过后面还有任务,后面几个任务不用判断直接用的async,组长检查代码让我把第一个任务也加到async里,实在不知道怎么合适地加进去。。。
两个任务自己写就可以了
一定用async的话,就用它的waterfall方法,然后再在里面自行判断一下? 自豪地采用 CNodeJS ionic
@DavidCai1993 自行判断后怎么跳出不执行后面的任务
@ilovelll 判断后如果数据查到了,就不再继续查,直接再不查询并把这一步的结果写成null,然后在最后的回调函数里直接拿结果数组里那个不为null的值? 自豪地采用 CNodeJS ionic
https://github.com/hezedu/sas/blob/master/demo/readOrCreate.js 楼主可以看看我写的这个。
@DavidCai1993 第三句话没有听懂
好像是这么写的吧: async.waterfall([function(cb) {col.findOne({_id: oi}, cb);}, function (r, cb) {if ( r ) return cb(); col.insertOne(obj, cb)}], function (err) {});
问题已经搞定,谢谢各位,附伪代码: