如何从一个内联函数中获得一个variables

所以说我有一个function:

function grabOldestJob() { var client = mysql.createClient({ user: dbConfig['USER'], password: dbConfig['PASS'], }); client.query('USE '+dbConfig['DATABASE']); client.query('SELECT url FROM '+dbConfig['JOB_TABLE']+' ORDER BY added ASC LIMIT 1 ', function selectCb(err, results, fields, passed) { if (err) { throw err; } client.end(); fetchFeed(results[0]['url']); } ); } 

我需要的是隐藏在内联函数中的结果[0] ['url'],所以我想从该函数中获取该variables,以便我可以使用它返回grabOldestJob函数或将另一个函数传递给内联函数,所以我可以使用结果[0] ['url']作为参数。

我对node.js的概念很陌生,希望尽可能使我的代码“正确”。 这个函数是一个进程中的第一个函数,它从数据库中拉出一个url,传递从远程服务器获取的内容,parsingxml提要并将某些位存储在数据库中。 我希望使用节点“一次运行很多事情”的能力,我将能够同时获取 – >parsing – >保存多个提要。 任何最佳实践提示,这也将不胜感激。

为此使用callback函数。

client.query(query,callback)函数一样。 你传入的数据和一个callback函数,如果处理完成后被调用。 用你的fetchFeed(url,callback)函数做同样的fetchFeed(url,callback)

 ... client.end(); fetchFeed(results[0]['url'],function(result){ // here 'result' contains the fetched feed and can be stored into the database }); ... 

 function fetchFeed(url,cb){ // download feed here and call cb(downloaded_data) when finished, passing the downloaded data to the cb() function } 

看看: 了解node.js事件循环

外部作用域中定义的每个variables都在外部作用域的内部作用域中可见。 这基本上意味着当你在关键字'var'的函数中定义variables的时候,任何嵌套函数都会看到它。 另一方面,当你定义一个没有“var”关键字的variables时,它将在全局范围内可见。 这是一个例子:

 (function () { var v = 5; (function () { v = 3; })(); console.log(v); })(); 

这将打印出3 。 所以如果你想要一个参数在内部函数之外是可见的的话,你必须把它复制到一个全局variables中(不确定引用是否可能会被垃圾收集?)。 喜欢这个

 (function () { var v = 5; (function (n) { v = n; })(42); console.log(v); })(); 

这将打印出42