gpt4 book ai didi

jquery - 同时ajax请求angularjs?

转载 作者:行者123 更新时间:2023-12-01 01:55:11 25 4
gpt4 key购买 nike

我想一次发送多个ajax请求。这是我的 js 代码。

<a class='btn btn-success' ng-click='getDataajax()'>Re Check</a>

app.controller('customersCrtl', function($scope, $http, $timeout) {
function wrapper() {
$scope.getEventSeconds();
$timeout(wrapper, 5000);
}
$http.get('cget.php', {
params: {
'action': 'get_info'
}
}).success(function(data) {
$scope.list = data;
$scope.currentPage = 1; //current page
$scope.entryLimit = 10; //max no of items to display in a page
$scope.filteredItems = $scope.list.length; //Initially for no filter
$scope.totalItems = $scope.list.length;
});
$timeout(wrapper, 5000);
$scope.getDataajax = function() {
$http.get('cget.php', {
params: {
'action': 'set_info'
}
}).success(function(data) {});
};
$scope.getEventSeconds = function() {
$http.get('cget.php', {
params: {
'action': 'get_info'
}
}).success(function(data) {
$scope.list = data;
$scope.currentPage = 1; //current page
$scope.entryLimit = 10; //max no of items to display in a page
$scope.filteredItems = $scope.list.length; //Initially for no filter
$scope.totalItems = $scope.list.length;
});
};
})

这是工作发现 get_info ajax 每 5 秒发送一次。但是当我启动 set_info ajax 然后 get_info ajax 启动时,它正在等待完成 set_info ajax。

我想在 get_info 触发时同时处理两个链接,然后不等待 set_info ajax 完成。

谢谢。

最佳答案

我认为您感兴趣的是$q.all 。来自文档:

<小时/>

all(promises);

Combines multiple promises into a single promise that is resolved when all of the input promises are resolved.
Parameters

Param    | Type                             | Details
promises | Array.<Promise> Object.<Promise> | //An array or hash of promises

返回一个将使用值数组/散列来解析的单个 Promise,每个值对应于 Promise 数组/散列中相同索引/键处的 Promise。如果任何一个 Promise 以拒绝的方式解决,那么由此产生的 Promise 将以相同的拒绝值被拒绝。

<小时/>

示例

$q.all({
users: $http.get('https://api.github.com/users'),
repos: $http.get('https://api.github.com/repositories')
}).then(function(results) {
var users = results.users.data;
var repos = results.repos.data;
});

这是一个plunker这在行动中。

更新

在多次重读该问题后,我意识到异步发出两个 ajax 请求,同时只想对两个请求都有一个回调并不是原始问题的问题。

根据我的理解,问题是如何让多个ajax请求同时发生,而不考虑哪个先发生,并且不需要通用的已解决的 promise 回调(如我最初的答案所述)。

当发出 ajax 请求时(例如 $http.get(...);),javascript 的执行不会停止。如果发出另一个 ajax 请求,无论第一个请求是否完成,它都会触发。在间隔循环中持续发生 ajax 请求并让按钮事件触发独立的 ajax 请求不会导致任何冲突。

虽然问题中的代码并不理想,但我无法确切理解为什么“get_info”请求正在等待“set_info”请求完成。我创建了一个 jsFiddle 来尝试重新创建原始代码的功能,它似乎按预期工作:

http://jsfiddle.net/Tnt56/

我使用了 jsFiddle,因为它有一个 /echo/json/ api 功能来测试 ajax 功能。如果您在控制台中打开开发人员工具,此 fiddle 将记录 ajax 请求的关键点。 $timeout 包装器每 5 秒触发一次,我已将 GetDataajax 的响应设置为延迟 6 秒。当 getEventSeconds 函数登录到控制台时,单击 GetDataajax 按钮。它将记录它已启动,然后 getEventSeconds 将再次记录,最后 GetDataajax 将得到解析。

顺便说一句,我不得不使用 jQuery 的 $.ajax() 而不是 Angular 的 $http,因为出于某种原因,尽管使用了请求 header (Content -类型)。请求“有效”,但延迟功能无效。

关于jquery - 同时ajax请求angularjs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24794718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com