gpt4 book ai didi

javascript - JavaScript 中的非阻塞代码问题

转载 作者:行者123 更新时间:2023-11-28 11:35:38 26 4
gpt4 key购买 nike

我试图制作一个强力民意调查投票脚本。

$('#vote').click(function(e) {                                      
var noOfvotes = 0;
var noOfattempt =0;
var noOffail =0;

for(var i =0 ; i<500;i++){
$.ajax({
url: 'http://www.example.com/survey/',
type: 'POST',
data: {poll: '123',
vote:"option3"
},
})
.done(function() {
noOfvotes++;
})
.fail(function() {
noOffail++;
})
.always(function() {
noOfattempt++;
});
}
//Result printing
console.log('No of attempt :' + noOfattempt);
console.log('No of done :' + noOfvotes);
console.log('No of fail :' + noOffail);
});

我面临的问题是在这些ajax请求完成之前执行结果打印。所以在控制台上的输出是这样的

No of attempt :0   
No of done :0
No of fail :0

但是我需要在所有 Ajax 请求完成后执行这些行。我该如何针对这种情况制作阻止代码。

最佳答案

将请求堆叠在一个数组中,并使用 $.when 来确定它们何时全部完成

$('#vote').click(function (e) {
var XHR = [],
noOfvotes = 0,
noOfattempt = 0,
noOffail = 0;

for (var i = 0; i < 500; i++) {
XHR.push(
$.ajax({
url: 'http://www.example.com/polling/',
type: 'POST',
data: {
poll: '123',
vote: "option3"
},
}).done(function () {
noOfvotes++;
}).fail(function () {
noOffail++;
}).always(function () {
noOfattempt++;
})
);
}

$.when.apply(undefined, XHR).done(function() {
console.log('No of attempt :' + noOfattempt);
console.log('No of vote :' + noOfvotes);
console.log('No of fail :' + noOffail);
});
});

关于javascript - JavaScript 中的非阻塞代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232744/

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