本文主要是介绍for循环里面的方法用setTimeOut定时调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近写爬虫程序时,首先获得了url的list列表,然后循环list去调用获取对应url的内容,因为在很短时间内频繁访问某网站存在一定的问题,所以需要在循环里面每间隔2s左右再去调用该方法。具体的实现方式记录如下:
之前的错误写法:
for(var i = 0;i<articleList.length;i++){setTimeOut(ArticelDetail.getAticleDetail(articleList[i].contentId)
,2000);
}
上面的写法中只会调用一次中间的函数,所以将循环用递归代替,改进后的方法如下:
//用递归代替循环每隔2S调用一次详细信息爬取事件
var i=0;
function getDetail() {i++;if(i<articleList.length){setTimeout(function(){ArticelDetail.getAticleDetail(articleList[i].contentId);getDetail();},2000);}
}
getDetail();
这样便可以实现每隔2S调用获取详情的方法,并且在该递归调用完成后才进行下一步操作。
这篇关于for循环里面的方法用setTimeOut定时调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!