在Node中从函数内部引用外部函数var
我想知道如何访问以下代码中的特定variables:
文件foo.js
function a(id, callback) { //Do things if (err) { callback(err); } else { callback(null, result); } } function b(x, callback) { //Do things if (err) { callback(err); } else { callback(null, result); } }
文件question.js
var id = 1; var x = 2; foo.a(id, function(err, result){ if (err) { //Do stuff } else { foo.b(x, function(err, result){ if (err) { //Do stuff } else { console.log("Function A: " + result); // I want to log result from foo.a console.log("Function B: " + result); } }); } });
我怎样才能访问内函数foo.b var函数foo.a结果?
问题是如果有一些方法来引用variables而不改变名称。 就像this.result
或super.result
。
问题是如果有一些方法来引用variables而不改变名称。 就像
this.result
或super.result
。
不,从外部范围(在你的情况下,在callback中的result
参数)访问一个标识符的方法没有任何标记,你通过在错误范围上重用标识符名称来影响标识符(在你的情况下, result
参数在b
的callback)。
相反,只要给参数不同的名称,因为你的b
callbackclosures你a
callback收到的result
:
var id = 1; var x = 2; foo.a(id, function(err, aresult){ // <=== `aresult` instead of `result` if (err) { //Do stuff } else { foo.b(x, function(err, bresult){ // <=== `bresult` instead of `result` if (err) { //Do stuff } else { console.log("Function A: " + aresult); // <=== Use them console.log("Function B: " + bresult); // <=== } }); } });