我有一个网站,我想在多个环境中检查登录凭据,但同时显示加载 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 。
关于javascript - 如何让 Ajax 的某些部分同步发生,而前端逻辑异步发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003034/