代码之家  ›  专栏  ›  技术社区  ›  ey dee ey em

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

  •  1
  • ey dee ey em  · 技术社区  · 10 年前

    在本岗位职能中

    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 但我想知道为什么我不能通过做 .resolve($q.notify (它将返回未定义的错误)?还有其他方法可以测试通知吗?

    非常感谢。

    1 回复  |  直到 10 年前
        1
  •  2
  •   dfsq    10 年前

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

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

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

    您可以使用 然后 :

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

    注意,中的第一个回调函数 然后 对应于决议,第二个对应于拒绝,第三个对应于发送通知 deferredRespond.notify .