2014-11-03 42 views
0

回調函數沒有結果,我想執行的回調函數從Node.js的

function recurring_end() { 

var sql= "SELECT `bookmarks`.`id`,`bookmarks`.`bookmark_url` as url FROM bookmarks LIMIT 0, 10"; 

connection.query(sql, function(err,bookmarks) { 
    for(var i = 0; i< bookmarks.length; i++){ 
     (function(i) { 

       parseArticle(i,function(err,result){ 
        console.log("Result is "+JSON.stringify(result)); 
         NewParseArtilce(result,function() { 
           console.log("New Parse Artilce is " +i); 
        }); 

       }); 
     })(i); 
    } 
}); 
} 
function NewParseArtilce(i,callback){ 
    console.log("New Article Number is is "+i); 

} 
function parseArticle(i,callback) { 
    console.log("Parse Article Number is " +i); 

return i; 
}; 

這是我的代碼。我正在執行parseArticle函數,然後我想要將結果傳遞到newParseArticle但我沒有得到parseArtilce中的任何結果。

任何想法,爲什麼它是造成問題

感謝

回答

1

因爲你parseArticle是同步的。它應該是:

function parseArticle(i, callback) { 
    console.log("Parse Article Number is " +i); 
    callback(null, i); // executes the callback, null is err and i is result 
} 

此外,您最後的console.log不會執行。你應該這樣做:

function NewParseArtilce(i,callback){ 
    console.log("New Article Number is is "+i); 
    callback(); // executes the callback 
} 
+0

什麼是空。你如何做到這一點是同步的或異步請 – 2014-11-03 04:45:13

+0

@HituBansal簡單的說,當使用'callback' = **異步**。當使用'return' = **同步**。 [瞭解回調](http://recurial.com/programming/understanding-callback-functions-in-javascript/)。 – majidarif 2014-11-03 04:48:39