我開發一個應用程序的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