我在使用$q service的角度js中使用链式承诺,除了 progressCallback 的信息之外它还能正常工作吗?让我画出我到目前为止所做的事情?
以下面的可链接承诺方式从我的控制器调用函数
fun1()
.then(resp1){
return fun2(resp1.id);
})
.then(resp2){
return $q.all([fun3(resp2.id),fun4(resp2.name)]);
})
.then(function(resp34){
return fun5();
})
.then(success)
.catch(errorhandler)
.finally(final);
这是我服务中的所有功能签名
var funX = function(param) {
var d = $q.defer();
d.notify('start with funX'); // Note: it was not working so placed inside else
doSomethingASync(param, function(err,data) {
if(err) { d.reject(err);}
else { d.notify('done with funX'); d.resolve(data); }
});
return d.promise;
});
现在我的问题是我在哪里收到控制器中的d.notify()
消息?
试用1
.then(resp1, info1){
return fun2(resp1.id);
});
但它未定义
试用2
.then(resp1, err1, info1) {
return fun2(resp1.id);
}
但仍未定义?
通过在finally()
.then().catch().finally(final, notify);
这是我的函数定义。
var errorHandler = function(err) {
console.error('Error returned from function:', err);
};
var final = function() {
console.log('Called Finally');
};
var notify = function(notification) {
console.log('Notify', notification);
};
var success = function(data) {
console.log('Success data');
console.log(data);
};
我们可以获得每个承诺函数通知,或者这是不可行的吗?
但现在我的查询已更改为
我们如何为.notify
添加$q.all()
?
据我了解$ q.all返回一个包含所有promise promise数据的promise;