2017-07-24 2 views
-1

In der folgenden Code, wenn die erste Anfrage fehlschlägt und die zweite Anfrage gibt Antwort der CP hat sowohl Fehler und Erfolg Antwort im Versprechen. Ich brauche nur die Erfolgsantwort.Aufruf der gleichen Versprechen zweite Zeit zwei Antwort zurück (ersten Anruf und zweite Anrufantwort)

cp = getcp() // getcp returns promises 
cp.catch(ex => { 
    if (ex) { 
    cp = getcp() 
    cp.catch(ex => { 
     cp = {} 
    }) 
} else { 
    cp = {} 
} 
}) 

Ich versuchte dann, lösen aber keine Verwendung. Bitte helfen Sie mir, nur die Erfolgsantwort zu erhalten. Danke im Voraus.

+0

Überschreibe das Versprechen-Objekt nicht! 'return' ein neues Versprechen oder einen Wert von' then'/'catch'-Handlern. – deceze

+0

@deceze können Sie pls sagen mir, wie man neue Versprechen innerhalb fangen – aaviss

Antwort

0

Ihre Kette sollte in etwa so aussehen:

getcp() 
    .catch(ex => { 
     if (ex) { 
      return getcp(); // return new promise which may get caught 
     } else { 
      return {}; // return "success" value 
     } 
    }) 
    .catch(() => ({})) // catch failure of second attempt 
    .then(res => console.log('result is', res)); // use final result 

Sie nicht immer das Versprechen Objekt überschreiben, können Sie stattdessen eine Kette von Versagen Handler und Funktionen konstruieren, die Erfolgswerte zurück.

+0

Ich versuchte dies, noch die CP gibt die Fehler und Erfolg Antworten – aaviss

+0

Es gibt keine Möglichkeit, dass dieser Code gibt * zwei * Antworten. Es gibt nur ein "console.log", das genau einen Wert erhält. – deceze

+0

Res gibt nur Erfolgsantwort. cp gibt sowohl Fehler als auch Erfolg Antwort – aaviss

Verwandte Themen