你如何在AngularJS中链接Promise

时间:2014-08-04 05:51:22

标签: angularjs

我找不到任何关于如何在AngularJS中链接承诺的好文档。有人可以尽可能清楚地向我解释如何正确地链接承诺吗?

其次,Promise API的then(成功,错误)vs,success(fn)/ error(fn)方法有什么区别? then / success / error方法只接受回调吗?回调应该返回什么,以及来自一个promise的数据如何传递给promise链中的第二个promise。

感谢您!

1 个答案:

答案 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");
});