gpt4 book ai didi

javascript - 多个同时 Ajax 请求代理

转载 作者:行者123 更新时间:2023-11-28 15:36:43 24 4
gpt4 key购买 nike

如何协调同时进行的 ajax 调用并仅在所有调用完成后才采取行动?

是否有一个方便的 javascript 帮助程序库,可以协调对数据库的多个同时进行的 ajax 调用,并在所有 ajax 数据获取返回其数据时调用指定的回调?我想向这个“协调器”或“代理”提交一个准备好的 ajax 调用字典,以及我的 WhenAllCompleted 回调函数。

该用例是一个常见的用例:在将数据库记录绑定(bind)到 UI 之前,必须填充外键数据关系的所有下拉列表,以便用户看到有意义的值而不是整数键通常存储在记录中。

如果已经有一个强大的标准库可以做到这一点,我宁愿不重新发明所有的管道代码来跟踪每个 ajax 请求的状态。

编辑:这是描述我想要做的事情的伪代码:

           when ajax1fetch is finished
and
ajax2fetch is finished
and
ajax3fetch is finished
and SELECT1 is populated
and SELECT2 is populated
and SELECT3 is populated
bindRecordToUI()

在我重构代码以使用 $.when() 之前,我在 .ajax() 成功回调中获取数据,并在该回调中填充 SELECT ;填充 SELECT 后,我将记录绑定(bind)到 UI。

如果我们提供$.when ajax 调用列表,则当ajax 请求完成时,将调用done 回调,这发生在填充SELECT 之前(如果SELECT 的项目列表很长)。

不知何故,我需要将 SELECT 元素的填充作为附加的条件,并找到一种方法将 ajax 调用返回的数据路由到填充函数(如果不执行 SELECT 填充函数)在 .ajax 成功回调中。

最佳答案

您正在寻找promises在JS中。这是一个不错的框架Q 。还有allSettled()功能就是您要寻找的东西。

Q.allSettled([saveToDisk(), saveToCloud()]).spread(function (disk, cloud) {
console.log("saved to disk:", disk.state === "fulfilled");
console.log("saved to cloud:", cloud.state === "fulfilled");
}).done();

代码取自API-reference

关于javascript - 多个同时 Ajax 请求代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25368526/

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