我有两个js文件一起工作。
crawler.js,其中包含抓取网站的代码
external_functions.js,包含在其他中使用的功能 js文件
在.each()函数中,我想在每次循环后超时1秒。超时功能在external_functions.js
中定义.each()部分crawler.js
$(".product-tile").each(function(){
var product = [];
var product_id = parseInt($(this).attr("data-itemid").replace(/-/g, ""));
var product_price = $(this).find('div > div.product-information > div.product-price > span.price-sales')
.text().replace(/(\r\n\t|\n|\r\t)/gm,"");
var product_brand = $(this).find('div > div.product-information > div.product-name > div.brand')
.text().replace(/(\r\n\t|\n|\r\t)/gm,"");
var product_description = $(this).find('div > div.product-information > div.product-name > div.name > a')
.text().replace(/(\r\n\t|\n|\r\t)/gm,"");
var product_link = $(this).find('div > div.product-image > a').attr('href');
var current_time = external_functions.current_time();
product.push(product_id, product_price, product_brand,product_description, current_time, product_link);
products.push(product);
external_functions.timeout_generator();
external_functions.js - current_time函数显然与此
无关module.exports = {
current_time: function () {
return (new Date).toISOString().replace('T', ' ').substr(0, 19);
},
timeout_generator: function () {
setTimeout(function () {
console.log('Timeout');
}, 1000);
},
};
由于每项功能,上述解决方案无效,因此不会与其他问题重复。
答案 0 :(得分:0)
两种方法
// setting each execution when intended
counter = 0;
each(function(params) {
setTimeout( function() { /* do your stuff */} , counter * 1000);
counter++;
})
使用递归
function foo(params) {
/* do your stuff */
setTimeout(foo, 1000, nextParams)
}
请注意,两种方法都不相同,目的是为您提供方向
次要PS:在setTimeout的第二个参数之后,以下参数作为参数传递给回调函数' foo'在我们的案例中