2016-06-01 8 views
0

Ich erstelle ein Projekt mit angularjs. Ich habe Probleme beim api Aufruf mit $ q.all.Here mein Code:

$q.all({ 
       getCustomerInfo: promocodeService.getCustomerInfo(), 
       assCustomerPromoCode: promocodeService.assCustomerPromoCode(), 
       getPromocodes:promocodeService.getPromocodes(), 
       getAllCurrencies:promocodeService.getAllCurrencies(), 
      }).then(function(resolved) { 

// here not comes when one of the api is failed 

       $rootScope.customerInfo = resolved.getCustomerInfo; 
       $scope.assPromoCode = resolved.assCustomerPromoCode; 
       $scope.promoCodes = resolved.getPromocodes; 
       $scope.getAllCurrencies = resolved.getAllCurrencies; 

       }); 

Mein Problem ist, wenn einer der api scheitert es nicht in den aufgelösten Zustand kommt.

+2

Wenn einer der api ausfällt, es wird die Fangfunktion kommen. Sie sollten eine '.catch (function (error) {// Fehlerbehandlung})' Methode definieren – Matheno

+0

Was erwarten Sie/wollen Sie passieren, wenn eine der APIs fehlschlägt? Fallback auf einen Default-Wert? Oder was noch? – Thomas

+0

Wenn eine API fehlschlägt, zeigt sie auch nicht die Daten anderer APIs an, ich möchte die Daten von APIs anzeigen, falls API fehlschlägt – Karan

Antwort

0

Das ist das erwartete Verhalten. all ist entworfen, um auszuführen, wenn sie alle erfolgreich sind.

Sie könnten einige Alternativen versuchen, je nach Ihren Anforderungen:

$q.all({ 
    //... 
}).then(function(resolved) { 
    //... 
}).catch(function() { 
    //Do something? 
}).finally(function() { 
    //Do something? 
})