いくつかの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()
て、オブジェクトプロパティに「キャッシュ」し、このモデルの他の関数で再利用できるようにするにはどうすればよいですか?