同步和异步
Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)
同步:一个任务完成了,有返回结果,才可以开展下一个任务。比如去超市买东西付账,必须等前面一个人付完了,才能轮到你付账,中途你是不能离开的
f1();
f2();
异步:一个任务正在做,它的下一个任务不必等前任务结束就可以继续执行(类似多线程)。
比如你想买东西,又不想出门,那就直接网购天猫超市下单,下完单后,你可以干别的,比如刷剧,玩游戏。直到货物到了,你签收就可以。
再比如,花瓣网页面数据加载过程,不需要等所有数据获取后再显示页面,而是你边看边继续加载新的图片。
再再比如,你正在开发新功能,客户突然给你提了bug,加上这个bug的活,你手上有3个活,但是bug很急需要马上做,你可以先把最紧急的做了,等有时间再做继续开发心功能…有关异步的典型例子就是ajax。
下面这个例子是jQuery ajax() 方法
var answer=true;
$.ajax({
url: "http://xxxxxxxx/",
success: function(a){
a=false;
}
});
alert(answer); //answer输出true
js是单线程的,Ajax(Asynchronous JavaScript and XML)默认是异步请求的,Ajax里面的代码还没有执行完,先执行了下面的代码,所以输出是true.
对AJAX不是很熟悉的同学可以看下参考链接最后一条
参考链接
http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
https://www.zhihu.com/question/19732473
https://www.runoob.com/jquery/ajax-ajax.html
https://segmentfault.com/a/1190000004322358