這與問題17757654類似,但沒有鏈接。Angular JS:按順序處理承諾(無鏈接)
背景:
我有一個非常有趣的API,每次按鍵都會帶回一些JSON,有時這些請求以錯誤的順序返回(按下非常快的按鍵)。鏈接承諾似乎是一個合理的解決方案,但我想知道是否有一個很好的方法來解決這個問題,而無需鏈接? (並且不知道關於請求/消息的任何細節)
我在這裏使用超時寫入一個例子:http://jsfiddle.net/zakGh/
及以下,
var myModule = angular.module('myModule', []);
myModule.factory('HelloWorld', function ($q, $timeout) {
var getSlowFirstMessage = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('Slow First Message');
}, 2000);
return deferred.promise;
};
var getFastSecondMessage = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('Fast Second Message');
}, 1000);
return deferred.promise;
};
return {
getSlowFirstMessage: getSlowFirstMessage,
getFastSecondMessage: getFastSecondMessage
};
});
myModule.controller('HelloCtrl', function ($scope, HelloWorld) {
$scope.messages = [];
HelloWorld.getSlowFirstMessage().then(function (message) {
$scope.messages.push(message);
});
HelloWorld.getFastSecondMessage().then(function (message) {
$scope.messages.push(message);
});
});
<body ng-app="myModule" ng-controller="HelloCtrl">
<h1>Messages</h1>
<ul>
<li ng-repeat="message in messages">{{message}}</li>
</ul>
</body>
你試過節流消息不會引發這麼快,也許在每一個按鍵或250ms的東西? –
不完全確定你想要完成的是什麼,但是這種你在想什麼? http://jsfiddle.net/zakGh/1/ – Lukas
@Lukas所有的問題是,它等待他們都完成。請參閱我的答案以瞭解如何使用隊列。 –