2014-11-04 29 views
-2

我需要一个传递的值。这是我的代码:无法获取nodejs中回调函数的值

function parseArticle(i, bookmark_id, bookmark_url, callback) { 
     console.log("Value of i is " + i); 
     console.log("Value of Bookmark_id is coming " + bookmark_id); 
     diffbot.article({uri: bookmark_url}, function(err, response) { 
      console.log("Value of Bookmark_id "+bookmark_id); 

我的问题是diffbot.article下的bookmark_id是未定义的。但根据parseArticle即将到来。

任何想法?

感谢

+0

参数在哪里? :/ – 2014-11-04 03:49:13

+0

parseArticle(i,bookmark_id,bookmark_url,callbackForParseArticle);我正在调用这个函数 – kamalpreet 2014-11-04 03:50:12

+0

这些是参数,其中是实际参数或传递给函数的值? – 2014-11-04 03:51:41

回答

0

您需要了解的Node.js和异步请求的整体思路和回调是如何工作的。

非常简单,您正在尝试访问diffbot.article回调中的参数bookmark_id。但是,功能parseArticle已被执行,并且不会等待diffbot.article的回调函数完成,因为它是而不是。因此,传递给parseArticle的所有参数在其内部使用的函数的回调中超出范围,因此您会遇到词法范围问题。

我建议阅读关于异步请求和关闭这个写得很好的blog post的想法。希望它能让你从正确的方向开始。