这类似于问题17757654,但没有链接。
背景:
我有一个非常健谈的 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>