2016-10-14 3 views
-1

Ich habe ein Versprechen, das eine Funktion zurückgibt, die Funktion hat eine eigene Fehlerbehandlung, aber manchmal wird dies aus irgendeinem Grund verpasst (muss später untersucht werden).Wenn Versprechen keinen Wert zurückgibt

Ich möchte ein Fallback hinzufügen, dass, wenn die Zusage fehlschlägt/null, dann eine andere Funktion zurückgeben.

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync(); 
    }); 
} 

Return self.trySync(): braucht eine Fehlerbehandlung ist es nicht dort zu übernehmen, als ob es als Kommentar gekennzeichnet. Mein Versuch scheint nicht zu funktionieren.

+0

Wenn 'trySync' kein Versprechen zurückzukehren, können Sie für diesen Test, aber wenn es gibt ein Versprechen verwenden möchten, löst sich nie, es wird härter – adeneo

+0

Was genau meinst du mit "* nehme an, es ist nicht da, als wäre es auskommentiert *". Was würde dazu führen, dass "nicht da sein"? – Bergi

Antwort

1

Werfen Sie einen Blick auf die difference between .then(…).catch(…) and .then(…, …).

Um Fehler von trySync() (und nur von dort) handhaben, Sie

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync().catch(function(error) { 
      router.navigate('home'); 
     }); 
    }); 
} 
Verwandte Themen