如何在 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
发送的通知。
在这个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
发送的通知。