Я хотел бы использовать $ q.all, чтобы дождаться завершения функции. У меня есть пример в plunker http://plnkr.co/edit/uG2JujPqoiBgqtRjEZwh?p=preview
<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() является тот, который написал асинхронной путь, но я хочу быть синхронизации с помощью $ q.all. Не могу изменить характер функции xxy, так как тогда он сломает другие вещи в моем большом проекте. xxy() - это простая версия большой функции, которую я использую, и ее сборку с использованием $ q.defer.
Поэтому в основном я хочу выход быть: 1 20 2 40 ... а не как его в настоящее время 1 2 .. 20 40 ...
plunker or fiddle please – Alp
Это выше кода – zPrima