js中异步和单线程使用场景及常见问题

使用异步的场景

  1. setTimeout

  2. ajax 请求数据

  3. 图片load 加载

  4. 点击事件

setTimeout

异步–结果:100、300、200web

console.log(100);
setTimeout(function(){
    console.log(200)
},1000);
console.log(300)

同步–结果:100、200、300ajax

console.log(100);
alert(200);
console.log(300)

点击事件

事件声明成功后,只有在点击时才调用触发事件


单线程

js是单线程的,因此必须有异步

这setTimeout没有时间限制
一、执行第一行,打印100
二、执行setTimeout,将传入setTimeout的函数暂存起来不执行(单线程特色:一次只能作一件事)
三、执行最后一行,打印300
四、待全部程序执行完成、产看有没有暂存的函数须要执行
五、发现setTimeout中没有时间限制的函数,当即执行,打印200异步

console.log(100);
setTimeout(function(){
    console.log(200)
});
console.log(300)

常见问题解答

一、同步和异步的区别、举例同步异步的例子

区别:同步会阻塞代码的执行,异步不会
例子:alert:同步;setTimeout:异步svg

二、setTimeout的例子

结果:13524函数

console.log(1);
setTimeout(function(){
    console.log(2)
},0);
console.log(3);
setTimeout(function(){
    console.log(4)
},1000);
console.log(5)