## promise 是如何解决回调嵌套的。
比如我们需要发送ajax请求,需要对请求回来的数据再一次操作,再次发送请求,照以前的情况我们应该这样写:
~~~
$http({
method: 'GET',
url: '/carrots-admin-ajax/a/article/6211',
}).then(function (response) {
if (response.data.code === 0) {
//从接口获取数据,然后ng-repeat出来
$scope.articleList = response.data.data.articleList;
//第二次回调
$http({
method: "PUT",
url: '/carrots-admin-ajax/a/u/article/status',
params: {id: 6211, status: 1},
headers: {'Content-type': 'application/json'}
}).then(function (res) {
if (res.data.code === 0) {
//dosomething
}
})
} else {
alert('错误')
}
})
~~~
使用了promise,每当我们需要回调时,就把回调函数return出去,然后在下一个then执行回调函数的回调函数;
~~~
//一个回调函数
function http2() {
return $http({
method: 'PUT',
url: '/carrots-admin-ajax/a/u/article/status',
params: {id: 6211, status: 1},
headers: {'Content-type': 'application/json'}
})
}
$http({
method: 'GET',
url: '/carrots-admin-ajax/a/article/6211',
}).then(function (response) {
if (response.data.code === 0) {
//从接口获取数据,然后ng-repeat出来
$scope.articleList = response.data.data.articleList;
return http2()//如果请求成功,执行另一个ajax请求,把该请求return出去。
} else {
alert('错误')
}
})
//执行return函数的回调函数
.then(function (res) {
console.log(res);
});
~~~
return 和不return的区别?