Ich möchte meine Versprechen je nachdem, ob der vorherige Anruf gelöst oder abgelehnt wurde, verketten. Ich rufe Server in allen Versprechungen an. Also, ich schreibe es wie-Bedingte Verkettung von Versprechungen
apiServices.patientsSearch(id)
.then(function(data){
return callback(null,data);
},function(err){
return apiServices.studiesSearch(id);
}).then(function(data){
return callback(null,data);
},function(){
return apiServices.seriesSearch(id);
}).then(function(data){
return callback(null,data);
})
.catch(function(err){
return callback(false,err);
});
Wie jeder dann ein Versprechen Objekt zurückgibt, Problem ist, dass Fang immer dann aufgerufen wird, wenn überhaupt Versprechen außer dem letzten Willen nennt. Eine Möglichkeit, die ich denke, ist zu überprüfen, ob err leer ist und es zu ignorieren. Ist es der richtige Weg?
I Anforderungsmodul verwenden, wenn ich gesetzt für immer: true, beginne ich getting-
{ [Error: socket hang up] code: 'ECONNRESET' }
Mit immer falsch, es funktioniert. Warum ist mein Socket auch nach dem Ende der Anfrage noch besetzt? Da die nächste Anfrage nur ausgeführt wird, wenn die Zurückweisung aufgerufen wird, sollte Socket zu diesem Zeitpunkt frei sein.
Was ist 'Rückruf (null, Daten)'? – Bergi
@Bergi Callback-Funktion, um Daten mit Fehler oder Ergebnis an den Controller zu übergeben. – krrish
Ich habe nicht verstanden, dass Fang immer aufgerufen wird, wenn irgendein Versprechen, außer dem letzten Anruf, aufgelöst wird. Kannst du etwas mehr erklären? – John