jQuery的延迟(也称为承诺和期货)可用于管理回调队列
解释为什么 jQuery 2.2.4 和 jQuery 3.7.1 之间的操作顺序不同
给定三个文件: 查看.html: 给定三个文件: view.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Boilerplate HTML Page</title> <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> <script src="helper.js" defer></script> <!-- Include helper.js --> </head> <body> <header> <h1>Welcome to My Page</h1> </header> <main> <p>This is a simple boilerplate HTML page.</p> </main> <footer> <p>© 2024 Your Name</p> </footer> </body> </html> helper.js: // document.addEventListener("DOMContentLoaded", function() { $(document).ready(function () { var initPicker = function () { console.log("helper"); }; var init = function () { $.getScript("picker.js") .done(function () { initPicker(); }) .fail(function (ex) { console.error("Failed to load the picker script."); }); }; init(); }); picker.js: var cp = cp || {}; // document.addEventListener("DOMContentLoaded", function() { $(document).ready(function () { cp.picker = (function($) { console.log("picker"); })($); }); 使用节点或任何您使用的东西启动它,然后打开js控制台日志并刷新页面。您将看到首先记录“picker”,然后记录“helper”。这就是我想要的情况。 但是,如果您将 jquery 从 2.2.4 更改为 3.7.1(并且没有其他更改),那么您将看到首先记录“helper”,然后记录“picker”。 此外,用普通 javascript 的 document.addEventListener("DOMContentLoaded") 替换对 $(document).ready 的两个调用,将导致仅记录“helper”,而根本不记录“picker”。 我尝试了许多不同的方法,例如使用 Promise、更改 defer 和 async 值等。似乎没有任何效果,除非: 你将jquery版本改回2.2.4 您实际上是在 view.html 标头中导入的。 您删除了包装“picker.js”文件的 $(document).ready。 不幸的是,在我的具体情况下,这三个选项都不可行。我需要准确了解这里发生的情况,以便我可以决定采取行动或找到其他解决方案。我正在努力在互联网上寻找答案。 我需要找出如何更新它,以便在 DOM 准备好后加载“picker.js”和“helper.js”,并且“picker.js”在“helper.js”之前加载,其中最小的改变 - 而不是上面列出的三个选项之一。 我们无法确定文档就绪的多次执行顺序 看看 jQuery 中的承诺
今天我注意到我网站的博客部分没有正确呈现,并且控制台正在吐出错误,我知道如何处理 jquery 未加载的情况。 当我查看源代码时,所有
我有一个函数,当用户离开页面时会调用该函数。此功能可确保始终保存页面上待处理的更改。如果保存失败,可以通过
我有两个 JS 函数,都返回 jQuery 的承诺。假设它们是:getServerTimestamp() 和 doSomething()。 getServerTimestamp(),在第一次调用时,基本上 获取当前时间...
这是一个常见的模式,我们在数据源列表中级联,第一次成功打破链,就像这样: var data = getData1(); if (!data) data = getData2(); if (!data) data = ...
我通过多个ajax调用拉入多个divs。在第一个ajax调用之前,我想显示一个加载的spinner。一旦所有的divs(这将需要一个未知的时间)已经加载,我想排序......
我有2个独立的模型,由2个不同的API调用填充。我对它们逐一进行获取,一旦两个模型的API调用都完成了,我的视图也可用了(然后触发递延......
[我在页脚处使用此代码来消除渲染阻塞资源 / *自定义代码* / $(document).ready(function(){$( '.menu-bar'...
[当用户更改我页面上的下拉菜单时,我有一些JQuery可以“填充”。我想将“ show”类添加到Bootstrap警报中,然后在“ stuff”完成后将其删除。在我目前的尝试中,我...
我知道类似的问题已经问了很多遍,但是有些问题已经过时了,建议使用不建议使用的解决方案,有些描述了解决方案,但不是在循环的上下文中,它们都不是直接的……
我已经创建了一个Web应用程序来存储客户请求的报价。一个报价可以是多个,所以当我打印一个报价时,有可能我必须打印连接的报价。为此,我是...
这里是代码:http://jsbin.com/lizami/edit?js,console也在此处粘贴代码:var aaa = $ .Deferred(); var bbb = function(data){console.log(data); var dfd = $ .Deferred(); ...
如何将Ajax Gravity Form的嵌入式jQuery脚本移动到页脚?
为了将defer添加到jquery链接,我想将Ajax Gravity Form的内联jQuery脚本移动到页脚。我该怎么办?
我正在尝试创建一个名为getApi的AJAX方法扩展,它将自动将我的不记名令牌添加到请求标头中。我有一个名为getToken()的延迟函数,该函数返回...
我对http://api.local/user/auth-我的API端点有跨域POST请求。我可以在带有CORS的api中允许跨域请求。如果使用Chrome,那会有所不同。我得到一个有效的服务器...
我如何发出许多AJAX请求,然后在它们全部完成后调用一个函数?
我有以下返回jQuery延迟对象的函数:function performAjaxRequest(arg1,arg2,arg3){return $ .ajax({url:someurl,type:“ POST”,data:{...
请注意,这是一个人为的示例。函数longFunc(){var deferred = $ .Deferred(); setTimeout(function(){console.log(“ long funccompleted”); ...
使用JQuery.Deferred时可以直接调用reject()吗?没有调用异步功能?也许我希望在异步功能的开始进行某种测试。如果测试失败,我...
jQuery Deferred-如何在执行.done()之前等待或延迟.animate函数完成?
我在$ .when().done()$ .when($ activeHighlight.removeClass('active'),$ nextHighlight.addClass('active'),。中进行了一系列的延迟动作。 ..
我在$ .when().done()$ .when($ activeHighlight.removeClass('active'),$ nextHighlight.addClass('active'),。中进行了一系列的延迟动作。 ..