2016-09-30 99 views
-2

我对异步瀑布有点问题,因为我想在循环处理的函数之后调用下一个函数。脚本是异步瀑布流的一部分,以前的函数工作得很好。这里唯一的事情是,它有一个用于loop.The代码below.Any帮助将是非常appreciated.Thanks节点js异步回调问题

function(querySize,req) 
{ 
console.log("in second function call :" +querySize); 
var temp,title; 
for(var counter = 0;counter <= querySize;counter++) 
{ 
    websiteAddressArray[counter] = req.query.address[counter]; 
    console.log("for is : " +req.query.address[counter]); 
    console.log("first line is : " +websiteAddressArray[counter]); 
    console.log("second line is : " +websiteAddressArray[counter]); 
    request(websiteAddressArray[counter], function(err, resp, body) 
    { 
     $ = cheerio.load(body); 
     console.log("title is : " +$('title').text()); 
     titleArray[counter] = $('title').text(); 
    }); 
    } 
    var line="this is string"; 
    callback(null,line); 
}, 
function(callback,line) 
{ 
    console.log("line is : " +line) 
}, 
+1

你的回拨在哪里?它是瀑布代码的一半,你可以发布你的async.waterfall代码吗? – abdulbarik

+0

@abdulbarik我编辑了代码。我的回调是下一个功能,它采取行,并简单地打印它 –

+0

什么是控制台打印'console.log(“行是:”+行)'? – abdulbarik

回答

1

syntax是不正确的。总是通过callback最后一个参数async.waterfall

function(querySize, req,callback) { 
    console.log("in second function call :" + querySize); 
    var temp, title; 
    for (var counter = 0; counter <= querySize; counter++) { 
    websiteAddressArray[counter] = req.query.address[counter]; 
    console.log("for is : " + req.query.address[counter]); 
    console.log("first line is : " + websiteAddressArray[counter]); 
    console.log("second line is : " + websiteAddressArray[counter]); 
    request(websiteAddressArray[counter], function(err, resp, body) { 
     $ = cheerio.load(body); 
     console.log("title is : " + $('title').text()); 
     titleArray[counter] = $('title').text(); 
    }); 
    } 
    var line = "this is string"; 
    callback(null, line); 
}, 
function(callback, line) { 
    console.log("line is : " + line) 
}, 
+0

bro我已经改变了你说的语法,但错误仍然是相同的“回调未定义” –

+0

是的,因为你没有定义回拨以上 – abdulbarik

+0

看到我更新的答案它应该工作 – abdulbarik