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

时间:2014-09-23 19:19:22

标签: 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的登录检查,在此期间可以启动'loading'gif,并在ajax运行时同时查看。 根据给出的答案,从最严格的意义上说,它不是同时运行,浏览器只是提供了这种幻觉。 对于未来可能遇到类似问题的人,我从在子函数上应用的setTimeout转换到在父函数上应用了一级的setTimeout。

1 个答案:

答案 0 :(得分:1)

你有没有试过在另一个ajax呼叫结束后做一个ajax呼叫? 首先,您显示加载屏幕并一个接一个地结束ajax调用。在最后一次通话中,您隐藏了您的装载。通过这种方式,您可以并行化所有ajax调用,验证每次传递。

You can use the Ajax Queue plugin