为了账号安全,请及时绑定邮箱和手机立即绑定

请教关于node异步循环的问题

请教关于node异步循环的问题

交互式爱情 2019-04-13 08:46:41
代码很简单,如下:varfind;data.some(function(ip){client.sismember(url+':ip',ip,function(err,mem){!mem&&(find=ip);console.log('redis:'+find);});console.log(find);returnfind;});原理很简单:我先some循环一个IP数组如果数组中的IP不存在redis中,我就将find赋值为当前IP如果循环过程中找到了IP,我就跳出循环,不再一直查询redis结果,代码中有两个console:先循环数组数据,find一直是undefined,因此不会跳出循环之后执行所有redis查询结果,并重复给find复制,并打印出来问题:首先结果不是我想要的效率差,我循环100条就查询100次redis请问如何解决?
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

安装万能的async:sudonpminstallasync
把代码改成:
varasync=require('async');
...
async.detect(
data,
function(ip,cb){
client.sismember(url+':ip',ip,function(err,mem){
console.log('redis:'+find);
cb(!mem);
});
},
function(result){
find=result;
console.log(find);
});
可以看下github上async的文档。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信