私はmilewiseのnode-soapクライアントを使用しています(ちなみにAPIを作成しています)が、正しいスコープへのコールバックの結果を取得するのにいくつかの困難があります。
ここに私が今持っているコードがあります:
function generateSoapRequest(req, res, next)
{
soap.createClient('http://127.0.0.1:' + cfg.service_port + cfg.service_url_path,
function(err, client) {
client.CXIf.CXIf.CXProcessXML(
{"XMLRequestData": {"CXLogon": {"UserID":"1901007", "Password":"2580", "LogonType":11 } } },
function(err, result, body) {
if (err) {
console.log(err);
return;
}
console.log(result);
var cxresponse = result.XMLResponse[0].CXResponse;
console.log('SessionID:' + cxresponse.SessionID + ' SessionInstanceID:' + cxresponse.SessionInstanceID);
});
});
}
function getVoiceMailInformation(req, res, next) {
var cxresponse = generateSoapRequest(req, res, next);
var something = doSomethingNext(cxresponse);
}
function doSomethingNext(cxresponse){....; return something;}
基本的に、getVoiceMailInformation() を起動すると、SOAP クライアントが作成され、generateSoapRequest() を通じていくつかの情報が要求されます。次のステップは、その関数の結果を取得し (方法がわからないため、上記のコードには実装されていません)、別のことを行うことです。
私の問題は、soap.createClient が非同期であるため、関数が完了した後にコールバックが起動されることです。
最善のアプローチは何ですか?(些細なことかもしれませんが、javascript の匿名関数のスコープは私を殺しているものです。)
どんな助けでも大歓迎です。