ajax 并行,AJAX请求不能并行执行使用$ .when(...)

我的脚本使大约15个Ajax调用到我的服务器。我希望他们能够并行执行。我试图使用when并行执行一堆Ajax请求,但由于某种原因,它仍然在逐一执行它们。

我的代码如下:

var requests = $.map(results, function(result, i) {

var suggestionContainer = $('

' + result + '
');

resultsContainer.append(suggestionContainer);

return $.get('check.php', { keyword: result }).done(function(res) {

res = JSON.parse(res);

suggestionContainer.append(generateSocialMediaList(res.social_media))

.append(generateDomainList(res.domains));

}).fail(function() {

suggestionContainer.remove();

});

});

$.when(requests).done(function() {

console.log('Complete')

}, function() {

alert('Something Failed');

});

有什么我做错了吗?

我提出15个请求的原因是因为check.php致电第三方API。该API速度很慢,不幸的是没有其他选择。提出15个并行请求会比1个请求快得多,并等待check.php完成。

代码工作像这样:

到suggestions.php的请求的情况下(作为解决该问题它不是必需,这不是包括在内)。结果存储在数组results中。

结果(约有15个)返回并用map进行迭代。

我将建议插入到页面中。然后我回复一个承诺。

requests数组现在包含10-15个承诺。

我使用when来并行执行请求(这就是我至少要做的)。

成功完成DOM更新并将check.php的结果插入到DOM中。

+0

你能否给我们一个原因,说明你最初会发出15个http请求(没有谈论js和css资产)? –

+0

'requests'包含一个'$ .get()'ajax请求数组。我提出了15个请求,因为我的'php'脚本调用的API服务器必须按顺序进行。他们不接受批量请求。这个API也很慢,所以我不做15个独立的调用,而不是让用户等待所有15个完成。 –

+0

@hamism另外,请求不会马上发生。当用户按下按钮时发生。我只包含了导致问题的相关代码。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值