因为js是单线程顺序向下执行的,同步指的是阻塞,通俗点讲就是你得等他执行完
let a=1 //这一条指的是同步,我没有使用方法,便于你理解意思,如果a=4不同步,则最后输出的应该是1 a=4 console.log(a)//4
然后我们再看异步
let a=1 //某异步方法 setTimeout(()=>{ a=4 },1000) //不会等待setTimeout执行,a此时还是1 console.log(a)//1
那异步有什么用呢?
let a=1 //某异步方法 setTimeout(()=>{ a=4 },1000) //用于异步修改某种值,比如异步方法可以是axios、ajax异步请求服务器上的数据 //前端页面先展示的是默认内容,请求成功之后显示服务器数据库的值用于前端渲染 setInterval(()=>{ console.log(a)//1...1...1...4...4...4...4...4......4 },250)
异步解决方案
有时,需要处理异步带来的问题,就是数据还未改变就被调用,我们希望能够等待异步请求结束再进行数据访问。
也就是希望异步变成同步来处理,详见:js Promise与async/await用法详解