面试官问我用户注册的账号做唯一性验证是怎么做的 我说是ajax做的 然后他问我是同步还是异步, 我说是异步,他就告诉我说我错了,应该是同步, 我想了一下午都没想出来为什么要用同步, 哪位大佬给我驾驶下啊
同步就是必须等ajax返回结果后才能继续执行,像验证什么的应该要等服务器返回结果了才能继续往下执行吧。如果是异步,可能账号都已经被注册过了, 若浏览器返回较慢,还没返回注册失败的结果,就继续向下执行js提示你注册成功,这就是个错误了
ajax请求其实用同步也行异步也行,只不过是分情形的。
ajax中的同步是必须等服务器返回了结果后,才会去执行success的方法,ajax的success方法没有执行的情况下,其他js代码是不执行的;
异步是说不需要等服务器返回了结果,就可以去执行其他js代码,等服务器返回了结果后再执行success方法;
这么说很清楚了吧?
验证登陆都用同步,为什么呢?因为你点击了按钮就是为了验证正不正确,然后跳转到另一个页面,这些逻辑代码一般都写在success方法里,对吧?你总不会写在外面吧?
那么什么时候用异步呢?比如你想一进入某个页面自动调用某个接口,你当然不想在请求接口的过程中阻塞其他js代码的执行吧,那么这时候就用异步ajax。
这个同步和异步都可以,如果是用户名输入完成之后失去焦点就校验给出账号可以注册或已经注册提示,这时候是异步校验,如果输完之后点注册按钮提交那就是同步
实际中这两种应该也比较常见,具体是不是这么做的有待验证
我认为回答没错,首先AJAX就是为了异步请求数据,只是你的回答不够全面,应该再加上一个但需要依赖调用,既将下一步调用写在当前调用的回调内!
------以上仅为个人观点,欢迎指正