javascript - 如何让 Ajax 的某些部分同步发生,而前端逻辑异步发生?

标签 javascript ajax asynchronous

我有一个网站,我想在多个环境中检查登录凭据,但同时显示加载 gif。

问题是,如果我使 ajax 同步,或者,

async: false,

然后页面的其余部分将暂停,直到检查凭据为止。

我尝试将 ajax 调用切换回异步,它会过早地显示用户未登录的误报错误,因为它尚未完成对所有环境的检查。

我还尝试了一种创可贴解决方案

setTimeout(loginCheckFunction, 600)

但这是任意时间,如果用户连接速度较慢,错误将会持续存在。

关于如何在不等待同步 Ajax 完成的情况下运行某些部分的任何想法? 谢谢!

编辑: 我认为这个问题几乎无意中解决了我的问题: How to display 'Loading' when making a 'synchronous' AJAX call in pure JavaScript?

编辑2: 我通过使用上述问题的最佳答案来回避这个问题。我在父函数的开头提供了一个非常小的 setTimeout 函数,调用基于 ajax 的同步登录检查,在此期间可以启动“正在加载”gif,并在 ajax 运行时同时查看。 但根据给出的答案,从最严格的意义上来说,它不是同时运行的,浏览器只是提供了这种错觉。 对于 future 的人可能会遇到类似的问题,我从应用于子函数的 setTimeout 转换为应用于父函数上一级的 setTimeout。

最佳答案

您是否尝试过在另一个 ajax 调用结束后执行一个 ajax 调用? 首先,您显示加载屏幕并依次执行 ajax 调用。在最后一次调用中,您隐藏了加载。通过这种方式,您可以并行化所有 ajax 调用,验证每个 channel 。

You can use the Ajax Queue plugin

关于javascript - 如何让 Ajax 的某些部分同步发生,而前端逻辑异步发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003034/

相关文章:

javascript - 计算器清除按钮

javascript - 如何在不刷新整页的情况下刷新选择

javascript - 数据库中的建议值

c# - OperationCanceledException 和 TaskCanceledException 之间的区别?

javascript - 在express js 4.4.1中压缩文件(gzip)

javascript - 在某些浏览器中,从 Canvas 元素内部单击并拖动会突出显示其外部的文本

javascript - 如何为每个对象添加Javascript函数?

javascript - 如何使用 Codeigniter 从 Ajax Jquery 中的 Controller 获取多个参数?

java - 如何做进程异步?

javascript - Nodejs 异步编程 - 为什么需要 "async"模块?什么是 "Callback Hell"/"Pyramid of Doom"?