for迴圈裡面的方法用setTimeOut定時呼叫
阿新 • • 發佈:2019-01-22
最近寫爬蟲程式時,首先獲得了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呼叫獲取詳情的方法,並且在該遞迴呼叫完成後才進行下一步操作。