问题标签 [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.

0 投票
4 回答
1133 浏览

jquery - jquery 延迟和异步 ajax 请求。- 比赛条件?

我一直在尝试获取我的 ajax 请求以保证从我加载的模板中得到响应。

基本上,如果我运行我的代码来返回我的延迟对象 $.then() 在我拥有我的模板对象之前调用。这仅在第一次运行时发生。

我用这个把头发扯掉了!

我的ajax调用:

我在我的方法中这样调用它:

0 投票
2 回答
931 浏览

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。我想知道是否有更好的方法来做我所描述的事情?

0 投票
1 回答
582 浏览

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" 确实是一个全局变量,它位于一个包含文件中,该文件仅包含用于构造和删除数据库的变量。

朱利安,非常感谢!

斯科特。

0 投票
2 回答
318 浏览

jquery - 是否可以将单个参数传递给 $.when 包含两个延迟对象?

我只想在 jQuery 对象中的所有图像都加载后才执行一些代码。我可以这样做:

这没关系,但我不想为每个图像定义一个单独的延迟对象。如果它们有数百个,或者它们可能出现也可能不出现在给定页面上怎么办?我想一次完成所有操作,例如:

我尝试创建一个allImagesHaveLoaded迭代图像的函数,为每个图像创建一个新的延迟对象。问题是,如果我返回一个这些数组作为参数,它就不起作用(因为它不是一个延迟对象,它是一个延迟对象数组)。

我也摆弄$.Deferred.pipe了一下(尝试创建一个链接的延迟对象传递给when),但这似乎没有帮助。

有没有明智的方法来做到这一点?

0 投票
1 回答
1866 浏览

javascript - 无论如何要传递 jquery deferred $.when 一个数组?

可能重复:
将延迟数组传递给 $.when()

无论如何要传递 jquery deferred $.when ajax 函数数组吗?例子:

谢谢你的帮助!

0 投票
5 回答
17611 浏览

jquery - 使用带有承诺的 jQuery 加载

我仍在努力解决deferred问题,所以考虑到这一点,我对如何执行以下操作有疑问。

我和我的团队有 3 个单独.load()的方法,每个方法都获取一个特定的模板并将其附加到同一个容器中。如您所想,每次加载所需的时间不同,因此当内容加载时,它以“阶梯式”方式加载(1,然后 2,然后 3)。我想使用deferred对象并等到它们全部完成,然后同时附加它们以删除“阶梯”动作。

所有三个调用都类似于上面的调用。

我怎样才能做到这一点?

0 投票
3 回答
51236 浏览

jquery - jQuery Deferred - 等待多个 AJAX 请求完成

我有一个三层深层的延迟 ajax 调用链,理想情况下,当最深层完成时,它们会一直兑现承诺(让我想起了《盗梦空间》……“我们需要更深入!”)。

问题是我一次发送了许多 ajax 请求(可能数百个)并且需要推迟到所有请求都完成。我不能指望最后一个完成。

0 投票
1 回答
2567 浏览

javascript - jQuery deferred - 我需要管道或链来实现这种模式吗?

我正在尝试使用延迟的 JQuery 来实现以下场景,但运气不佳。

您将使用延迟 API 的哪些部分,以及如何构建调用以实现以下目标:

对 serviceA 的第一个 ajax callA 检索 Id 列表

等到这个调用返回

然后 n ajax 调用 serviceB,每次调用都使用 callA 返回的列表中的 Id

等到所有 serviceB 调用都返回

然后是对 serviceC 的最终 ajax 调用

0 投票
1 回答
5320 浏览

javascript - 如何将 jQuery .when() 函数与一组动态 ajax 调用一起使用?

我正在使用 JqGrid 并且对于我正在加载的网格中的每一行,我正在进行 ajax 调用以获取其他数据。

完成后,我需要应用一些格式。

我想使用 $.when(),但我不知道如何调用它。我正在研究 apply() 方法,但我仍然不知道如何正确使用它。

这是我的代码:

我曾尝试将每个 $.ajax 调用推送到一个数组,但我无法直接传递数组并调用所有内容。

在此先感谢您的帮助!

0 投票
1 回答
318 浏览

jquery - jQuery - 仅在成功时延迟 ajax 函数返回?

我已经设置了一些代码,我想为 ajax 请求提供一个非常简单的 API。

所以,我想做的只是以某种方式使用 deferred 来返回成功。

这会被诸如

这样我就可以这样使用它:

基本上,该对象dataTools.foo从成功返回一个值,或者应该在失败的情况下返回一个空集,或者跳过该代码分支的东西。

我尝试过使用$.when().then(),但我似乎无法弄清楚如何将其融入我在这里描述的内容中。