众所周知,angular.js(angular 1.x)是由Google公司开发并维护的热门前端框架, 由于公司内部的一些项目用angluar比较早,所以做项目的时候直接以angular起手的,在项目中遇到过一些前端接口调用的问题,对于一些页面需要调用多个接口的情况, 开始是用anguarl的$watch来处理, 但是angular对数据做的是脏检查, watch越多就越慢,性能就越会下降.
angular中有很多的系统服务, 例如: $http、$timeout、$rootScope、$locale等
由于项目中暂时不支持es6的Promise和async用法, 所以angular的$q服务 可以完美解决接口调用中的问题.
场景一:
在当前页面中, 我需要同时调用3个或多个接口, 我需要在调用的所有接口都返回成功的时候,把页面的loading关掉展示 页面数据,如果用$watch写的话,代码可能是这样:
不推荐写法
// 初始化
$scope.loading = true; //控制页面loadinng
$scope.api1_result = false;
$scope.api2_result = false;
$scope.api3_result = false;
......
function api1(){
// 等待ajax请求返回请求结果
$scope.api1_result = true;
}
function api2(){
// ajax请求返回请求结果
$scope.api2_result = true;
}
function api3(){
// ajax请求返回请求结果
$scope.ap