我找不到任何关于如何在AngularJS中链接承诺的好文档。有人可以尽可能清楚地向我解释如何正确地链接承诺吗?
其次,Promise API的then(成功,错误)vs,success(fn)/ error(fn)方法有什么区别? then / success / error方法只接受回调吗?回调应该返回什么,以及来自一个promise的数据如何传递给promise链中的第二个promise。
感谢您!
答案 0 :(得分:2)
链接承诺:
var promise = $http.get(url);
// using then. the first callback is success.
promise.then(function(res){
console.log("promise then success 1");
});
// using then. the first callback is success + chaining another one.
promise.then(function(res){
console.log("promise then success 2");
});
// using success.
promise.success(function(res){
console.log("success 1");
});
// using error.
promise.error(function(res){
console.log("error 1");
});
// using then. The first arg is a success callback and the second is an error callback.
promise.then(function(res){
console.log("promise then success");
},
function(e){
console.log("promise then error");
});
现在这个承诺会发生什么。如果promise得到解决,所有“成功”回调都将被调用。 如果它被拒绝,那么将调用所有错误回调。
我在这里添加的所有回调都是“链式”回调。
编辑(感谢Nico)
promise的回调返回一个承诺,因此你可以将它们链接起来:
promise.then(function(res){
alert("1");
}).then(function(res){
alert("2");
});