如何异步调用一个函数的角度控制器内?我心中已经阅读有关的承诺,但是这不是一个HTTP调用,所以我不能使用。有没有什么解决方案来解决这些样的问题?我想显示spiner /装载机,直到被调用的函数完成它的工作。
//控制器JS
$scope.myFunctionCallOnClick = function()
{
if($scope.type=='TYPE1')
{
$scope.showSpiner();
//This function has called syncronously, and i can't display my spiner
Utils.doStuff(words,$scope);
$scope.hideSpiner();
}
else
{
Utils.doStuff2(words,$scope);
}
}
//Utils.js - 这是我的助手厂
angular.module('app').factory('Utils', function() {
var factory = {};
..
..
factory.doStuff = function()
{
var iteration = 10000000;
whilte(iteration > 0)
{
console.log(iteration);
}
}
..
..
return factory;
});
使用$超时服务来让浏览器做了一些工作的(显示在这种情况下,你的微调),并从$超时回调中调用doStuff。
$scope.myFunctionCallOnClick = function () {
if ($scope.type == 'TYPE1') {
$scope.showSpiner();
$timeout(function () {
Utils.doStuff(words, $scope);
$scope.hideSpiner();
});
}
else {
Utils.doStuff2(words, $scope);
}
}