代码很简单,如下: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的文档。
添加回答
举报
0/150
提交
取消