关于javascript异步问题

前言:我们在接触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();

执行顺序就变成了

这是不是我们想要的结果啦,就可以达到同步执行。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值