我正在制作一个小的诊断网页,并希望通过显示加载图像一段时间使系统看起来像是在后台努力工作。
我不是程序员。所以我基本上都在寻找一大堆有效的代码,这就是我尝试的方式......但是只是延迟功能永远不会延迟后续过程。似乎所有过程都在同时运行。
app.controller('HardworkCtrl', function($scope, $timeout) {
$scope.hardWork = function() {
// start showing hard-working image
$scope.loading = true;
$scope.justDelaying = function() {
$timeout(function() {
// do nothing...
}, 5000);
}
$scope.justDelaying();
$scope.theAnswer = "42."
// stop showing hard-working image
$scope.loading = false;
};
};
有什么想法吗?
答案 0 :(得分:2)
内部发生的任何事情" $ timeout"是异步的,所以它只是安排在以后,而不会阻止主执行。换句话说,调用 $ scope.justDelaying()后的说明会立即发生 ,而 justDelaying 中的说明会延迟5秒。要使这些指令稍后执行,您需要在$ timeout内移动它们,如下所示:
app.controller('HardworkCtrl', function($scope, $timeout) {
$scope.hardWork = function() {
// start showing hard-working image
$scope.loading = true;
$scope.delayThenDoStuff = function() {
$timeout(function() {
$scope.theAnswer = "42."
// stop showing hard-working image
$scope.loading = false;
}, 5000);
}
$scope.delayThenDoStuff();
};
};