我正在研究我的第一个节点模块,我正在努力在我的函数中的变量一点。第一个控制台日志给我我的数据,但第二个控制台日志给我未定义。
module.exports = {
getClient: function() {
var options_auth={user: username, password: password};
return new Client(options_auth);
},
getTestCaseById: function(client, args, testCaseId) {
var restResponse;
url = baseurl + "testcase/" +testCaseId;
client.get(baseurl + "testcase/" +testCaseId, args, function(data, response) {
restResponse = data;
console.log(data);
});
console.log(restResponse);
}
};
关于我对restResponse变量做错了什么的想法
这是因为.get
调用是异步的。运行client.get
函数后的console.log,而该数据调用仍在进行中。调用内部的函数在调用完成后运行——称为回调函数。
在回调函数中使用返回的数据,或者将返回的数据传递给另一个函数。
返回数据:
getTestCaseById: function(client, args, testCaseId, callback) {
var restResponse;
url = baseurl + "testcase/" +testCaseId;
client.get(baseurl + "testcase/" +testCaseId, args, function(data, response) {
restResponse = data;
callback(data)
});
}
然后传入一个回调:
getTestCaseById(client, args, testCaseId, function(response) {
console.log(response); //your returned data
});