正确确定我的参考范围

时间:2013-02-06 12:51:31

标签: javascript node.js scope

我有一个节点应用程序,它创建一个SOAP客户端来进行多次API调用。每个呼叫都以login()开头,其中创建了一个客户端。我不想为每个连续的调用创建一个客户端,而是将其存储起来,并为回调中发生的后续调用重用相同的客户端。我正在努力的是范围界定。

我将module.exports设置为返回对象的函数:

return {
  soapClient: null,

  /**
   * Establishes a connection with the client API & authenticates.
   *
   * @param  {Object}   args     An object containing
   * @param  {Function} callback [description]
   * @return {[type]}            [description]
   */
  login: function( username, password, callback ) {
    var url = datasources.api.baseUrl;

    // Create the SOAP client we'll use to call the API
    datasources.api.module.createClient( url, function( err, soapClient ) {
      // Store off the client for future calls.
      // ---> THIS IS THE PROBLEM <--- //
      this.soapClient = soapClient;

      // Authenticate
      var authArgs = {...};
      soapClient.Login( authArgs, function( err, result ) {
        // Authenticate
      });
    });
  },

  ... ADDITIONAL FUNCTIONS ...
}

如何正确存储传递给soapClient回调的createClient(),以便它可以在对象属性中“缓存”并由此模型中的其他函数重用?

0 个答案:

没有答案