gpt4 book ai didi

javascript - 如何创建一些ajax调用完成后触发的事件?

转载 作者:行者123 更新时间:2023-11-30 23:41:57 24 4
gpt4 key购买 nike

请帮助我根据我的情况创建正确的事件。我相信有真正的方法做到这一点,没有任何计数器(像这样: How to know when all ajax calls are complete )

HTML:

<ul id="links">
<li><a href="1.html">What is Yoda's first name?</a></li>
<li><a href="2.html">Why does Padme die?</a></li>
<li><a href="3.html">Who is Darth Rage?</a></li>
</ul>
<div id="content"></div>

jQuery:

$('#links a').each(function (index, el) {
url = $(el).attr('href');
$('<div class="article" />').appendTo('#content')
.load(url, function(){
filterOneArticle(this);
});
});

// I want this function run after all articles will be loaded and filtered
$.bind('yepAllArticlesHaveBeenLoaded', filterAllArticles);

filterAllArticles = function() {};
filterOneArticle = function(el) {};

最佳答案

如果出于某种原因您不想像 Nick 建议的那样使用 ajaxStop (也许您担心其他不相关的 ajax 请求会让您失望),您可以跟踪有多少请求您已发出并检查每一个何时成功/失败:

var requestCount = 0;
$('#links a').each(function (index, el) {
url = $(el).attr('href');
++requestCount;
$('<div class="article" />').appendTo('#content')
.load(url, function(){
filterOneArticle(this);
--requestCount;
if (requestCount == 0) {
filterAllArticles();
}
});
});

看起来它有一个竞争条件(如果第一篇文章在我们请求第二篇文章之前完成加载怎么办?),但事实并非如此。浏览器上的 JavaScript 是单线程的(禁止使用 web workers ,您必须显式执行此操作),因此我们知道我们将在第一次完成之前完成启动请求的循环。

关于javascript - 如何创建一些ajax调用完成后触发的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304232/

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