2017-04-18 1 views
1

ich ein ETIMEDOUT Fehler nach einigen erfolgreichen Anrufe bekommen ... ist hier der Code:NodeJS Node-SOAP ETIMEDOUT nach einigen erfolgreichen Anrufe

soap.createClient("./WSDL/test.wsdl", function (err, soapClient) 
{ 
    if (err) 
    { 
     throw new Error(err) 
    }; 

    bpData.forEach(function (elementOfArray) 
    { 
     soapClient.service.binding.Update({ 
      ProductUpload: { 
       ID: elementOfArray.ProductID, 
       newIndicator: 'false', 
       UpdateIndicator: 'true', 
       UpdateDate: dateFormat(new Date(), 'yyydd'), 
       RawData: elementOfArray.RawData1, 
       RawData2: elementOfArray.RawData2 
      } 
     }, function (err, result) 
     { 
       if (err) 
       { 
        console.log(err); 
        //throw new Error(err); 
       } else 
       { 
        console.log(JSON.stringify(result)); 
        return JSON.stringify(result); 
       } 
      } 
     ); 
..... 

ich bereits versucht, den Timeout-Parameter, aber nichts zu setzen geändert ...

Danke!

+0

Vielleicht fragen Sie zu schnell und einige Spam-Schutz tritt in. Haben Sie versucht, Drosselung Anforderungen? – Sirko

+0

@Sirko Wie kann ich die Anfrage drosseln? Vielen Dank! –

+0

Ich bin mir sicher, dass es Bibliotheken dafür gibt, aber das Grundprinzip wäre wie folgt: nimm das erste Element aus deinem Array und führe die Anfrage aus. Wenn es fertig ist, nimm den zweiten Gegenstand und wiederhole den Vorgang. Tun Sie dies, bis Sie alle Elemente aus dem Array verarbeitet haben. vielleicht müssen Sie zwischen zwei Anfragen etwas Verzögerung mit 'setTimeout()' hinzufügen. – Sirko

Antwort

0

forEach ist eine Synchronisierungsfunktion aber soapClient.service.binding.Update ist async was bedeutet, dass Sie alle Anfragen in einem Augenblick in die Warteschlange stellen. Sie sollten async.js verwenden oder eine eigene Funktion erstellen, um darauf zu warten, dass die erste Anfrage beendet wird, um zur zweiten zu gelangen.

+0

versuchte es 'async.each (bpFormattedData, Funktion (ElementOfArray)' aber das gleiche passiert. Ich denke, wie @Sirko sagt, ich muss es drosseln, aber leider weiß ich nicht, wie. –

+0

http://Stackoverflow.com/a/30514817/7868639 Das ist genau das, was Sie suchen :) – itsundefined

1

danke Jungs! Es funktioniert jetzt mit einer asynchronen Warteschlange :)! Guten Abend

+0

Willkommen in der Welt von async. Es ist schwer für den Anfang. – itsundefined

+0

wie? Bitte Code anzeigen ... tnks –

Verwandte Themen