我有一个网站,我想在几个环境中检查登录凭据,但同时显示一个加载的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的登录检查,在此期间可以启动'loading'gif,并在ajax运行时同时查看。 根据给出的答案,从最严格的意义上说,它不是同时运行,浏览器只是提供了这种幻觉。 对于未来可能遇到类似问题的人,我从在子函数上应用的setTimeout转换到在父函数上应用了一级的setTimeout。
答案 0 :(得分:1)
你有没有试过在另一个ajax呼叫结束后做一个ajax呼叫? 首先,您显示加载屏幕并一个接一个地结束ajax调用。在最后一次通话中,您隐藏了您的装载。通过这种方式,您可以并行化所有ajax调用,验证每次传递。