我开发一个应用程序的NodeJS和遇到下面的问题:更新javascript函数内外部的变量的Node.js
我使用节点模块node-rest-client
发出使用REST API请求。我使用模块提供的post
方法来达到我的目的。我需要获取json响应并将其写入单独的变量并返回它们。
我在client.post
方法之外定义了returnData
变量。我需要更新此函数中的returnData
变量,该变量作为参数传递给client.post
方法。
但我在这里有一个范围问题。尽管我尝试更新该函数内的returnData
变量,但是当执行从client.post
函数返回时,我看到在调用client.post
函数之前,我设置的相同值(在此情况下为null,但可能是任何值)仍然存在于该变量中。
如何定义范围以便我可以更新函数内部的外部变量,并将其作为参数传递给另一个函数?任何帮助将不胜感激。
以下是我的代码:
module.exports = function(){
require("../config");
var restClient = require('node-rest-client').Client;
var client = new restClient();
var sessionID = null,
reqID = 1;
var login = function(username, password){
var requestParams = {};
var apiParams = {};
requestParams.jsonrpc = "2.0";
requestParams.method = ZABBIX_API_METHODS.login;
apiParams.user = username;
apiParams.password = password;
requestParams.params = apiParams;
requestParams.id = reqID;
requestParams.auth = null;
var args = {
data: requestParams,
headers:{"Content-Type": "application/json-rpc"} // ask response type to be application/json-rpc
};
var returnData = {};
returnData.status = null;
returnData.data = null
client.post(ZABBIX_API, args, function(resData,rawRes){
if(rawRes.statusCode == 200){
returnData.status = rawRes.statusCode;
returnData.data = resData;
}
else{
returnData.status = rawRes.statusCode;
returnData.data = "Request Failed!";
}
reqID = reqID + 1;
console.log(returnData.data);
});
console.log("SessionID:"+getSessionID());
return returnData;
}
var functions = {
login: login
}
return functions;
}
谢谢。
的可能重复[Node.js的:REST客户端返回它的返回前值(http://stackoverflow.com/questions/20535689/node-js-rest-client-returns-the-value-before-its-返回) – manji 2014-11-03 09:34:31