nodejs全局变量未按预期工作

时间:2014-07-16 14:52:36

标签: node.js

我正在研究我的第一个节点模块,我在函数中对变量进行了一些努力。第一个控制台日志为我提供了数据,但第二个控制台日志给了我未定义的内容。

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变量做错了什么的想法。

1 个答案:

答案 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
});