2 qq 39906711 qq_39906711 于 2017.08.31 20:45 提问

今天面试官问我的一个问题怎么想都没想通

面试官问我用户注册的账号做唯一性验证是怎么做的 我说是ajax做的 然后他问我是同步还是异步, 我说是异步,他就告诉我说我错了,应该是同步, 我想了一下午都没想出来为什么要用同步, 哪位大佬给我驾驶下啊

4个回答

qq_19865749
qq_19865749   2017.08.31 21:07

同步就是必须等ajax返回结果后才能继续执行,像验证什么的应该要等服务器返回结果了才能继续往下执行吧。如果是异步,可能账号都已经被注册过了, 若浏览器返回较慢,还没返回注册失败的结果,就继续向下执行js提示你注册成功,这就是个错误了

qq_19865749
qq_19865749 回复zcy_1996: 当然了,你用异步的话也可以,前提是你不能在浏览器返回注册结果前进行注册成功或注册失败后相关的操作,只能做其它与此无关的操作,比如点击其它页面元素浏览信息啊什么的,不然逻辑就乱了,不过注册页面一般就是简单的表单,有什么其它可操作的呢
3 个月之前 回复
qq_19865749
qq_19865749 回复zcy_1996: 不会啊,出错的话服务器直接返回出错页面了,服务器端不会说出错了又什么都不返回
3 个月之前 回复
qq_39906711
qq_39906711 回复Liekkas_BX: 那这样如果是同步的话出问题了不就一直卡着了嘛 这样感觉影响挺大的
3 个月之前 回复
qq_19865749
qq_19865749 说错了,是服务器返回较慢
3 个月之前 回复
congge_1993
congge_1993   2017.09.01 14:22

这个同步和异步都可以,如果是用户名输入完成之后失去焦点就校验给出账号可以注册或已经注册提示,这时候是异步校验,如果输完之后点注册按钮提交那就是同步
实际中这两种应该也比较常见,具体是不是这么做的有待验证

qq_39906711
qq_39906711 我个人感觉大部分都是失去焦点再验证的吧,这么说的话大部分都是异步做的应该
3 个月之前 回复
qq_38563845
qq_38563845   2017.08.31 21:48

ajax请求其实用同步也行异步也行,只不过是分情形的。
ajax中的同步是必须等服务器返回了结果后,才会去执行success的方法,ajax的success方法没有执行的情况下,其他js代码是不执行的;
异步是说不需要等服务器返回了结果,就可以去执行其他js代码,等服务器返回了结果后再执行success方法;
这么说很清楚了吧?
验证登陆都用同步,为什么呢?因为你点击了按钮就是为了验证正不正确,然后跳转到另一个页面,这些逻辑代码一般都写在success方法里,对吧?你总不会写在外面吧?
那么什么时候用异步呢?比如你想一进入某个页面自动调用某个接口,你当然不想在请求接口的过程中阻塞其他js代码的执行吧,那么这时候就用异步ajax。

qq_39906711
qq_39906711 受教了。。以前写登陆都是异步写的 本机上倒是没看出什么问题来 果然还是问题没考虑全啊
3 个月之前 回复
Beamon__
Beamon__   2017.09.06 23:11

我认为回答没错,首先AJAX就是为了异步请求数据,只是你的回答不够全面,应该再加上一个但需要依赖调用,既将下一步调用写在当前调用的回调内!

------以上仅为个人观点,欢迎指正

Csdn user default icon
上传中...
上传图片
插入图片