2014-11-01 2 views
1

Мой код выглядит следующим образом:

$q.all([ 
     this.getData(EnumGetData.ContentStatus), 
     this.getData(EnumGetData.ContentType), 
     this.getData(EnumGetData.UserProfile), 
    ]) 
     .then((results) => { 
      self.contentStatus = results[1]; 
      self.contentType = results[2]; 
      self.userProfile = results[3]; 
     }, function() { 
      alert // 
     }); 

параметры функции Мои GetData, как это:

 getData(controller) { 

Моя функция GetData вернуть это, если есть ошибка:

 .error((data, status, headers, config) { 
      defer.reject(); 
     }); 

Я хотелось бы сделать сообщение с предупреждением, если $ q.all терпит неудачу. Может ли кто-нибудь предложить, как я могу это сделать.

ответ

0

Вот плункер, показывающий, что вам нужно сделать http://plnkr.co/KUPTjpbVBgMhWUWrh1YI.

Вы можете передать сообщение об ошибке, подобное этому: deferred.reject ('ERROR MESSAGE'), а затем вы можете поймать его в обработчике ошибок тогда.

function getData(input) { 
    var deferred = $q.defer(); 

    $timeout(function() { 
     deferred.reject(input); 
    }, 2000); 

    return deferred.promise; 
    } 

    $q.all([getData(1), 
    getData(2), 
    getData(3) 
    ]).then(function success(data) { 
    console.log('should not get here'); 
    }, function(error) { 
    alert(error); 
    }); 
Смежные вопросы