前言:我们在接触js的过中,总会遇到一些问题,比如输出结果不是我们想的那样,undefined等等问题,很多时候就是因为踩了js“异步”的坑。
异步:不用等待一件事完成就可以去做另外一件事情,比如你去洗衣机洗衣服和去厨房做饭这两件事情来说,你不用等到洗衣机洗完衣服了再去做饭,你在洗衣机洗衣服的过程中就可以去做饭啦,不用等。这就是异步。
同步:需要等待一件事完成之后再去做下一件事情,比如你排队上洗手间,你必须要等待前面的人出来了你才可以去上洗手间呀。这就要等待。这是同步
一、js的异步
话不多说,我们来猜测一下以下的代码会怎么执行
function doFunction(){
console.log("1111");
setTimeout(function(){
console.log("2222");
},1000)
console.log("3333");
}
doFunction();
1
2
3
4
5
她的执行顺序是这样的。并不是按顺序执行,不需要等待setaTImeout执行完毕
那怎么把异步的程序改为同步的呢?比如我就要等到settimeout执行完毕,那我们可以这么做,用promise来做,如果对promise还不太了解的话,我建议自行百度,很多资料,讲的非常好
function doFunction(){
console.log("1111");
return new Promise(function(resolve,reject){
setTimeout(function(){
console.log("2222");
resolve();
})
})
.then(function(){
console.log("333");
})
}
doFunction();
执行顺序就变成了
这是不是我们想要的结果啦,就可以达到同步执行。