Multiple then() calls fire in order
Because each then() returns a new promise, original order is preserved.
by jdmarshall
HTML
<script src="https://code.angularjs.org/1.2.12/angular.js"></script>
<div ng-controller="MyCtrl">
<h2>Promise.then() calls resolve in order</h2>
<div class="output">Output: {{output}}</div>
<div class="input">
<button ng-click='doClick()'>Click me</button>
</div>
</div>
CSS
body{
padding: 10px;
}
.input, .output {
padding: 10px;
}
.output {
height: 20px;
}
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope, $q) {
$scope.output = "";
var deferred = $q.defer();
deferred.promise.then(function(val) {
$scope.output = val;
}).then(function(val) {
$scope.output += "B";
}).then(function(val) {
$scope.output += "C";
}).then(function(val) {
$scope.output += "D";
});
$scope.doClick = function() {
deferred.resolve("A");
};
}