我正在研究我的第一个节点模块,我在函数中对变量进行了一些努力。第一个控制台日志为我提供了数据,但第二个控制台日志给了我未定义的内容。
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变量做错了什么的想法。
答案 0 :(得分:1)
那是因为.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
});