EDIT - >有益なコメントの後、私は$タイムアウトが最良の答えではありません実現しています。また、解決された約束を返し
(function() {
'use strict';
angular.module('MyApp', []);
angular
.module('MyApp')
.controller('MyCtrl', MyCtrl);
MyCtrl.$inject = ['$scope', '$interval'];
function MyCtrl($scope, $interval) {
$scope.players = ['a', 'b', 'c', 'd', 'e'];
var INTERVAL_LENGTH = 1000; // This can be however long you want
var INTERVAL_COUNT = $scope.players.length;
if (INTERVAL_COUNT > 0) {
$interval(function() {
var random = Math.floor(Math.random() * $scope.players.length);
$scope.players.splice(random, 1);
}, INTERVAL_LENGTH, INTERVAL_COUNT).then(function() {
$scope.players = 'done!';
});
}
}
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyApp" ng-controller="MyCtrl">
<span>{{ players }}</span>
</div>
$interval
:だから私は、間隔を使用することについて、ここで他の回答に同意するだろうが、私はまだ角度の組み込み$intervalサービスを使用することをお勧めし最後の反復が完了しているので、間隔が完了した後に実行したい非同期作業は簡単に処理できます。
前の答え:
角度$timeoutサービスを提供しています。コントローラに依存関係として注入した後:whileループの各繰り返しの間に500ミリ秒間停止します。
私は元の質問でwhileループに言及していましたが、あなたの答えにはwhileループがなく、何の出口戦略 –
のいずれか、私は明確にするためのコードでそれを追加します –
私はちょうどそれがwhileループの実行を一時停止するとは思わない:p –