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

时间:2015-02-04 15:06:31

标签: javascript angularjs deferred angular-promise

在这篇文章中

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(它会返回undefined的错误)?还有其他方法可以测试.notify吗?

谢谢

1 个答案:

答案 0 :(得分:1)

通知回调是then语法的一部分,可用于提供流程的状态。

如果您想通知您不应将deferredRespond.resolve$q一起使用,您只需要直接调用延迟对象的notify方法:

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