如何在 angularjs 中测试 .then 的 .notify

How to test .notify for .then in angularjs

在这个post函数中

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!');
                    });

我可以通过 .resolve($q.reject 来模拟 .reject 但我想知道为什么我不能通过 .resolve($q.notify 来测试 .notify (它会 return 未定义的错误)?有没有其他方法可以测试 .notify?

谢谢

通知回调是 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发送的通知。