在Jquery中ajax方式中async用作掌控并行和触发器,当async值为true时是触发器允诺,当async值为fase时是并行允诺。
ajax中async那个特性,用作掌控允诺统计数据的形式,预设是true,即预设以触发器的形式允诺统计数据。有时候工程项目中会加进AJAX并行。那个并行的原意是当JS标识符读取到现阶段AJAX的此时会把网页里大部份的标识符暂停读取,网页再次出现死而复生状况,当那个AJAX拒绝执行完后才会竭尽全力运转其它标识符网页死而复生状况中止。而触发器则那个AJAX标识符运转中的此时其它标识符那样能运转。
一、async值为true (触发器)
当ajax推送允诺后,在等候server端回到的那个操作过程中,后台会竭尽全力 拒绝执行ajax块前面的JAVA,直至server端回到恰当的结论才会去拒绝执行success,换句话说这此时拒绝执行的是三个缓存,ajax块发出允诺后三个缓存 和ajax块前面的JAVA(另三个缓存)比如
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", success:function(result){ function1() } failure:function (result) { alert(Failed); }, } function2();
在上例中,当ajax块发出允诺后,他将逗留function1(),等候server端回到,但与此同时(在那个等候操作过程中),后台会去拒绝执行function2()。
二、async值为false (并行)
当拒绝执行现阶段AJAX的此时会暂停拒绝执行前面的JS标识符,直至AJAX拒绝执行完后后,就能竭尽全力拒绝执行前面的JS标识符。比如
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", async: false, success:function(result){ function1() } failure:function (result) { alert(Failed); }, } function2();
当把asyn标为false时,此时ajax的允诺时并行的,换句话说,那个此时ajax块发出允诺后,他会等候在function1()那个地方性,不能去拒绝执行function2(),直至function1()部分拒绝执行完。
有人说:既然触发器这么好,那全部都用触发器好了,并行存在还有什么意义?那么,并行适用作一些什么情况呢?我们能想一下,并行是一步一步来操作,等候允诺回到的统计数据,再拒绝执行下一步,那么一定会有一些情况,只有这一步拒绝执行完,拿到统计数据,通过获取到这一步的统计数据来拒绝执行下一步的操作。
我一开始用ajax时在想,自己写的一些函数为什么不拒绝执行呢?于是我把他放在ajax的上面仍然不拒绝执行,这可怎么办,于是就把函数全部放在了success的回到函数里面,发现函数拒绝执行了。但是把函数放在success里面标识符总归是“丑的、乱的”,后来才知道ajax是预设的触发器拒绝执行,ajax的统计数据还没允诺回来,有些函数就已经拒绝执行完了。而我需要拿到允诺回来的统计数据就能拒绝执行下一步,所以那个是触发器没办法实现的,并行的存在还是有一定道理的。