嵌套函数调用nodejs

时间:2015-01-28 07:41:43

标签: javascript node.js

抱歉这个天真的问题,刚开始学习Nodejs。你能否告诉我为什么控制权永远不会出现在这一行 - console.log("inside ScrapePage callback")?感谢您查看此内容并感谢您的帮助。

var CronJob = require('cron').CronJob;

new CronJob('* * * * * *', function() {
    var collection = db.collection('webpages');
    collection.find({}, function(e, docs) {
// iterate over the webpage list
        for (var i = 0; i < docs.length; i++) {
            var webpage = docs[i];
            (function (webpage) {
                DoStatusCheck(webpage);
            })(webpage);
        }
    });
}, null, true, "America/Los_Angeles");

function DoStatusCheck(webpage) {
    ScrapePage(webpage, function(error, value){
        console.log("inside ScrapePage callback");
    })
}
function ScrapePage(webpage)
{
    return "inside ScrapePage function";
}

2 个答案:

答案 0 :(得分:1)

ScrapePage不会调用您传递给它的回调。

编辑它以调用第二个参数。

function ScrapePage(webpage, cb)
{
  cb(null, "value");
}

答案 1 :(得分:0)

你永远不会打电话给回叫。您应该ScrapePage接受第二个参数:

function ScrapePage(webpage, callback) {}

然后在完成所需的任何工作后调用该回调,传递错误和结果:

function ScrapePage(webpage, callback) {

    doSomethingAsync(function (err, result) {

        if (err) {
            return callback(err, null);
        }

        callback(null, result);
    });
}