问题标签 [jquery-deferred]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - jquery 延迟和异步 ajax 请求。- 比赛条件?
我一直在尝试获取我的 ajax 请求以保证从我加载的模板中得到响应。
基本上,如果我运行我的代码来返回我的延迟对象 $.then() 在我拥有我的模板对象之前调用。这仅在第一次运行时发生。
我用这个把头发扯掉了!
我的ajax调用:
我在我的方法中这样调用它:
jquery - jQuery Deferreds - 将 $.when 的结果传递给 $.then
我开始更多地使用 jQuery Deferred 对象,我遇到了这个问题:
我有一个中央 AJAX 函数,它执行数据的预验证、ajax 设置和其他一些发送到服务器并返回 xyz 作为数据的事情。如何在 $.when(ajaxfn).then(dosomethingwithresult()) 的“then”部分访问“xyz”;我知道 ajaxfn 返回一个延迟对象,但是有没有办法将 xhr 的 responseText 向前传递?
我基本上是这样做的......
目前我只是将 $.data 指针传递给 ajaxfn,然后在 ajax 请求成功时,我有 $('body',pos,result) 然后从内部访问它然后 $ ('body).data(pos) == xyz。我想知道是否有更好的方法来做我所描述的事情?
jquery - Jquery Deferred - 这是一个范围吗?句法?
我有一个清除数据库的通用例程:
这个例程是从以下位置调用的:
WebDBBuilder.php
是一个文件,它从我们的服务器读取数据并从服务器数据库上的可用数据构建/重建本地 WebDB(尽管有 W3C,该死的。我们早在他们放弃我们之前就开始了)。当轮询服务器的例程标记新数据可用时,将调用此例程。然后我们销毁本地数据库中的某些表——全局变量g_sSQL_dropDB
只是一个DROP TABLE IF EXISTS tbl_someTable
字符串数组。
该transactDB()
例程是另一个延迟轴承函数,它执行传递给它的 SQL 语句。正在按要求工作,transactDB()
因为正在正确删除相关表格,并且在整个应用程序的其余部分都使用它。该getNextDataSet()
函数是更大对象的一部分。它被正确调用。
问题是页面跳转根本不会发生。clearDB()
这是函数 中 Deferred 对象的某种范围问题吗?
我缺少的代码中有什么吗?我尝试过使用 done()、resolve()、$.when().then()。纳达。
任何帮助将不胜感激。我在 jQuery 论坛上问了几个问题,基本上没有任何回应,所以我想我在 stackoverflow 上会有更好的运气!
<------------ 已添加 -------------->
感谢您的大力投入。我使用了 Julian 给我的代码,并且(使用 $.map 的小语法切换),它运行良好!
你对函数中的“this”引用是正确的。我之前从课堂上提取了一些代码,只是脑子里放了个屁。var "g_sSQL_dropWorkoutDB" 确实是一个全局变量,它位于一个包含文件中,该文件仅包含用于构造和删除数据库的变量。
朱利安,非常感谢!
斯科特。
jquery - 是否可以将单个参数传递给 $.when 包含两个延迟对象?
我只想在 jQuery 对象中的所有图像都加载后才执行一些代码。我可以这样做:
这没关系,但我不想为每个图像定义一个单独的延迟对象。如果它们有数百个,或者它们可能出现也可能不出现在给定页面上怎么办?我想一次完成所有操作,例如:
我尝试创建一个allImagesHaveLoaded
迭代图像的函数,为每个图像创建一个新的延迟对象。问题是,如果我返回一个这些数组作为参数,它就不起作用(因为它不是一个延迟对象,它是一个延迟对象数组)。
我也摆弄$.Deferred.pipe
了一下(尝试创建一个链接的延迟对象传递给when
),但这似乎没有帮助。
有没有明智的方法来做到这一点?
jquery - 使用带有承诺的 jQuery 加载
我仍在努力解决deferred
问题,所以考虑到这一点,我对如何执行以下操作有疑问。
我和我的团队有 3 个单独.load()
的方法,每个方法都获取一个特定的模板并将其附加到同一个容器中。如您所想,每次加载所需的时间不同,因此当内容加载时,它以“阶梯式”方式加载(1,然后 2,然后 3)。我想使用deferred
对象并等到它们全部完成,然后同时附加它们以删除“阶梯”动作。
所有三个调用都类似于上面的调用。
我怎样才能做到这一点?
jquery - jQuery Deferred - 等待多个 AJAX 请求完成
我有一个三层深层的延迟 ajax 调用链,理想情况下,当最深层完成时,它们会一直兑现承诺(让我想起了《盗梦空间》……“我们需要更深入!”)。
问题是我一次发送了许多 ajax 请求(可能数百个)并且需要推迟到所有请求都完成。我不能指望最后一个完成。
javascript - jQuery deferred - 我需要管道或链来实现这种模式吗?
我正在尝试使用延迟的 JQuery 来实现以下场景,但运气不佳。
您将使用延迟 API 的哪些部分,以及如何构建调用以实现以下目标:
对 serviceA 的第一个 ajax callA 检索 Id 列表
等到这个调用返回
然后 n ajax 调用 serviceB,每次调用都使用 callA 返回的列表中的 Id
等到所有 serviceB 调用都返回
然后是对 serviceC 的最终 ajax 调用
javascript - 如何将 jQuery .when() 函数与一组动态 ajax 调用一起使用?
我正在使用 JqGrid 并且对于我正在加载的网格中的每一行,我正在进行 ajax 调用以获取其他数据。
完成后,我需要应用一些格式。
我想使用 $.when(),但我不知道如何调用它。我正在研究 apply() 方法,但我仍然不知道如何正确使用它。
这是我的代码:
我曾尝试将每个 $.ajax 调用推送到一个数组,但我无法直接传递数组并调用所有内容。
在此先感谢您的帮助!
jquery - jQuery - 仅在成功时延迟 ajax 函数返回?
我已经设置了一些代码,我想为 ajax 请求提供一个非常简单的 API。
所以,我想做的只是以某种方式使用 deferred 来返回成功。
这会被诸如
这样我就可以这样使用它:
基本上,该对象dataTools.foo
从成功返回一个值,或者应该在失败的情况下返回一个空集,或者跳过该代码分支的东西。
我尝试过使用$.when().then()
,但我似乎无法弄清楚如何将其融入我在这里描述的内容中。