欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于AJAX的异步与同步的差异性比较

程序员文章站 2022-04-17 08:21:35
...

1.其实同步和异步的差别就在于:举个例子:我们打电话的时候,拨通电话之前,会有一段等待时间,那么如果在这段时间内,我们什么都不能做,一直等到正常通话,那么就是同步。如果在此期间我们去做点其他的小事情,然后等到接通电话后再来通话,那么这就叫做异步。

2.在选择同步和异步的时候,一般都是优先选择异步,但是还是给同步留下了口子。

3.我们在使用的时候还是要注意一点小情况:

XIRJS.common.Util.ajaxRequest({
	url : me.deleteUrl,
	params : {
	      data : jsonObject
	},
	success : function(response) {
	      XIRJS.MessageBox.Success(XIR_lang.comm.util.alert.message.successTitle);
	      me.grid.getStore().reload();
	}
}, this);
在这种情况下,是可以使用异步的,当请求成功后,在来进行相应的操作。

XIRJS.common.Util.ajaxRequest({
       url : 'bottomAsset/getNodeIdByPClass.action?p_class=' + p_class,
       async : false,
       success : function(record) {
	 if (Ext.isEmpty(record)) {
	 return;
	 }
	 node_id = record;
	 }
 });
但是如果是上面这种情况的话,如果我们是定义了一个局部变量,然后这个变量是给后面的操作提供服务的话,我们就会有一个问题,当我们的数据再异步的情况下,还没有成功获取到返回值得时候,这时候node_id不就是之前内存中的数据了么,并没有是最新我们需要的数据,那么此时就会出现,此处得到的效果不对。所以我们在这里必须使用同步,只有当当前的请求成功了,并且给这个局部变量赋了最新的值后,我们才能使用这个数据来进行进一步的处理。

当然如果我们要使用异步处理也可以,那就需要我们在成功的时候,不是给局部变量赋值,而是直接在成功做取到返回值,然后将这个返回值作为参数来进行处理,这样才能完成我们需要的效果。