Javascript Node.js-通过URL数组一次循环一个URL

Javascript Node.js-通过URL数组一次循环一个URL,javascript,arrays,node.js,request,cheerio,Javascript,Arrays,Node.js,Request,Cheerio,我是NodeJS的初学者,我正在尝试编写一个web抓取脚本。我得到了网站管理员的许可,如果我每分钟提出的请求少于15个,我可以刮去他们的产品。当我开始时,它通常一次请求所有URL,但经过一些工具处理后,我能够遍历数组中的每个项目,但是当数组中没有其他项目时,脚本不会停止吗?我对我的结果不是很满意,我觉得有更好的方法可以做到这一点 var express = require('express'); var fs = require('fs'); var request =

我是NodeJS的初学者,我正在尝试编写一个web抓取脚本。我得到了网站管理员的许可,如果我每分钟提出的请求少于15个,我可以刮去他们的产品。当我开始时,它通常一次请求所有URL,但经过一些工具处理后,我能够遍历数组中的每个项目,但是当数组中没有其他项目时,脚本不会停止吗?我对我的结果不是很满意,我觉得有更好的方法可以做到这一点

    var express = require('express');
    var fs = require('fs');
    var request = require('request');
    var cheerio = require('cheerio');
    var app     = express();
    var async = require('async');

app.get('/scrape', function(req, res){
productListing = ['ohio-precious-metals-1-ounce-silver-bar','morgan-1-ounce-silver-bar']
var i = 0;
async.eachLimit(productListing, 1, function (product, callback) {
    var getProducts = function () {
        var url = 'http://cbmint.com/' + productListing[i];
        request(url, function(error, response, html) {
            if(!error){
                var $ = cheerio.load(html);

                var title;
                var json = { title : ""};

                $('.product-name').filter(function(){
                    var data = $(this);
                    title = data.children().children().first().text();

                    json.title = title;
                })
            }
            var theTime = new Date().getTime();
            console.log(i);
            console.log(json.title);
            console.log(theTime);
            i++;
        });
    }
    setInterval(getProducts,10000); 
})
res.send('Check your console!')
})

app.listen('8081')
console.log('Magic happens on port 8081');
exports = module.exports = app; 

您没有在迭代器函数中调用
callback
。请看一下您的文档