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