2015-02-04 1 views
1

В этой записи функцииКак проверить .notify для .Затем в angularjs

var deferredRespond = $q.defer(); 
      var statusNotice="Loading..."; 
      deferredRespond.notify(statusNotice); 
$http.post(processorUrl,{ 
       params:request, 
       }).success(function(respondData){ 
         //deferredRespond.resolve(respondData); 
         /*For Test Rejected Defer! -awh*/ 
         deferredRespond.resolve($q.reject("Simulated Reject")); 
         //deferredRespond.resolve($q.notify("Simulated LOADING...")); 
        }) 
        .error(function(){ 
         deferredRespond.reject('Failed defer!'); 
        }); 

я в состоянии имитировать .reject делая .resolve($q.reject Но мне интересно, почему я не могу испытать .notify делая .resolve($q.notify (его вернет ошибку undefined)? Есть ли другой способ проверить .notify?

Спасибо

+0

Вам не нужно это делать вообще; 'post()' уже возвращает обещание. – SLaks

+0

@SLaks Я обновил функцию выше, так что это то, что я сделал для уведомления, но, похоже, не релятивистски распечатывается для. Then в контроллере. – Ezeewei

+0

$ q.resolve() и $ q.reject() возвращают обещания (разрешенные или отклоненные), кажется, что уведомление не возвращает обещание. – freele

ответ

1

Уведомить обратного вызова является частью then синтаксиса и может быть использован для обеспечения состояния потока процесса.

Если вы хотите сообщить вам не следует использовать deferredRespond.resolve с $q, вам просто нужно позвонить уведомит метод непосредственно отложенного объекта:

deferredRespond.notify('Simulated LOADING...'); 

И вы сможете подписаться на все три ситуации, используя then :

deferredRespond.promise.then(function(data) { 
    console.log('resolved', data); 
}, 
function(data) { 
    console.log('rejected', data); 
}, 
function(data) { 
    console.log('notified', data); 
}); 

Обратите внимание, что первая функция обратного вызова в then соответствует резолюциям, второй отбраковки, а третий для уведомления отправить с deferredRespond.notify.

Смежные вопросы