【问题标题】:Select using recursivity to iterate node js选择使用递归迭代节点js
【发布时间】:2016-06-16 23:54:54
【问题描述】:

我正在迭代一个有 20000 行的 mysql 数据库,问题是在每个 roww 中我需要调用一个 url 并获取其内容并更新数据库,问题是......我如何等待整个过程继续迭代?,我怎样才能让它更快,比如一次做两个,一次做树?谢谢

var query = connection.query('SELECT * from product where product.product_description = "0" ', function(err, rows, fields) {
        kontador =1;
        if (!err)
        {
            var url = rows[0].url;
            url = url.replace('../..','');
            //console.log(url);
            id = rows[0].id;
            url = 'http://example.com'+url;


            doCall(url,id,kontador,function(response){
                console.log(response,kontador);

                if(response && kontador <= rows.length){

                    var url = rows[kontador].url;
                    url = url.replace('../..','');
                    id = rows[kontador].id;

                    url = 'http://www.example2.com'+url;
                    //console.log(id);

                    doCall(url,id, kontador, doCall);
                    kontador +=1;

                }

            });


        }
        else
            console.log('Error while performing Query.');
    });

function doCall(urlToCall,id,kontador, callback) 
{
    request({'url':urlToCall}, function(error, response, html){
            //console.log('inside');
            //console.log(error);
            if(!error){

                var $ = cheerio.load(html);
                $('#content').filter(function(){
                     var data = $(this);
                     data = data.find('p');
                     // console.log('-');
                     // console.log(data.html());

                     var queryy = connection.query(' UPDATE product SET  product_description = "'+data.html()+'"  WHERE id = '+id, function(err, rows, fields) {
                        if (!err)
                        {
                            console.log('updated! ');
                             return callback(true);
                        }else{
                            console.log('error sql!');
                        }
                    });


                    //process.exit();
                });
            }
        });
}

【问题讨论】:

    标签: javascript node.js recursion callback


    【解决方案1】:

    为了协调您的应用程序的异步行为(可以并行完成,如果有节流,..)您应该使用现有的库,例如:

    还有许多其他库可以帮助您构建复杂的异步调用图。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2017-12-07
      • 2018-06-21
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2012-10-17
      • 2019-12-10
      相关资源
      最近更新 更多