2016-05-25 3 views
1

NodeJsの現在のSOAPクライアントを使用して、HTTP要求をサーバに送信するたびにSOAPサービス関数を呼び出します。NodeJSのSOAPクライアントを同期化して使用する

問題は、SOAPサービスコールが終了する前に要求が返され、データが返されないという問題です。

ここでの問題は、ロジックが非同期ですが、同期させる必要があることです。

私を適切なソリューションに案内してください。

function soap_get_items(req,res){ 
    var resp = []; 

    var soap = require('soap'); 
    var url = 'http://example.com/example.wsd?singleWsdl'; 
    var args = {name:"N.Hillary"}; 

    soap.createClient(url, function(err, client) { 
     client.exampleSoapFunction(args, function(err, result) { 
      resp = result; 
     }); 
    }); 

    json_resp = JSON.stringify(resp); 
    res.end(json_resp); 
} 
+1

Node.jsは1スレッドです。同期式石けんの応答を待つ間、世界は止まるでしょう。 –

+1

答えを得る場所で 'res.end(result)'を呼ぶだけです。 –

+0

あなたのコードは*非同期*です。つまり、コールバック内の 'result' *に関するすべてのコードを実行する必要があります。 –

答えて

4

同期させる必要はありません。提供されるコールバックを使用するだけでよい:

soap.createClient(url, function(err, client) { 
    client.exampleSoapFunction(args, function(err, result) { 
     res.end(JSON.stringify(result)); 
    }); 
}); 
+0

皆様、ありがとうございました。 –

+0

lolこのモデレーター "H. Pauwelynツ"は私の編集を拒否し、同じことをやり直して自分自身で承認しましたが、それを悪化させました。それはrep詐欺のようなものです:上記のコメントのD –

+0

スクリーンショット - http://i.imgur.com/HUvORNe.png –

関連する問題