1

いくつかのAPI呼び出しを行うためのSOAPクライアントを作成するノードアプリがあります。各呼び出しは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