【发布时间】:2014-12-18 14:00:31
【问题描述】:
我想使用 $q.all 来等待函数完成。我在 plunker 中有一个例子@987654321@
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js"></script>
</head>
<body ng-app="App">
<div ng-controller="AppController">
Its the app
<button ng-click="run()">Run (check console)</button>
</div>
<script>
var App = angular.module("App", []);
App.controller("AppController", function($scope,$q){
$scope.xxy = function(num){
var d = $q.defer();
for(var i=0;i<100000;i++){
//do nohing
}
d.resolve(num*20);
var promise = d.promise;
return $q.all([promise]).then(function(data){
return data;
});
};
$scope.run = function(){
for(var i=0;i<10;i++){
console.log(i);
console.log($scope.xxy(i));
//$scope.xxy(i).then(function(r){
// console.log(r);
//})
}
};
});
</script>
</body>
</html>
xxy() 函数是以 async 方式编写的,但我希望它是使用 $q 的 sync。全部。不能改变 xxy 函数的性质,因为它会破坏我的大项目中的其他东西。 xxy() 是我正在使用的一个大函数的简单版本,它使用 $q.defer 构建。
所以基本上我希望输出为:1 20 2 40... 而不是目前的 1 2 .. 20 40...
【问题讨论】:
-
plunker or fiddle please
标签: javascript angularjs