1

我有一个节点应用程序,它创建一个 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()回调的内容,以便它可以“缓存”在对象属性中并被此模型中的其他函数重用?

4

0 回答 0