JS篇 ------ 异步和单线程

对应知识点

1、什么是异步(对比同步)

(1)异步
js程序是单线程的,程序执行过程中,会先跳过异步,把同步程序执行完之后,再执行异步

        //  1、什么是异步(对比同步)
        console.log(1)
        setTimeout(function () {
   
            console.log(3)
        })
        console.log(2)
        // 打印顺序 1 2 3
        // js程序是单线程的 第一步先执行第一个log
        // setTimeout 是异步函数 跳过执行 把非异步程序按顺序执行之后 再执行异步函数
        // 第二步执行第三个log
        // 最后执行异步函数

(2)同步
同步执行的程序会发生阻塞,阻塞走通之后才会接着执行后面的程序

        // 对比同步
        console.log(100)
        alert(200)
        console.log(300)
        // 同步程序会发生阻塞,阻塞走通之后才会接着执行后面的程序

(3)何时需要异步
—> 在可能发生等待的情况
—> 等待过程中不能像 alert 一样阻塞车程序运行
—> 因此,所有等待的情况都需要异步

2、前端使用异步的场景

前端使用异步的场景
(1)定时任务: setTimeout,setInverval

        // setTimeout
        // 执行顺序 1 2 3
        console.log(1)
        setTimeout(function () {
   
            console.log(3)
        })
        console.log(2)

(2)网络请求: ajax 请求,axio 请求,动态 img 加载

		// 网络请求
		// 执行顺序 start  end  data
        console.log('start')
        $.get('/xxx', function (data) {
   
            console.log(data)
        })
        console.log('end')

		// 动态 img 加载
		// 执行顺序 加载图片前 图片加载之后 图片已经加载(图片加载出错) 
        console.log('加载图片前')
        var img = document.createElement('img')
        img.onerror = function () {
   
            console.log('图片加载出错')
        }
        img.onload = function () {
   
            console.log('图片已经加载')
        }
        img.src = 'xxxxx'
        console.log('图片加载之后')

(3)事件绑定

		// 事件绑定
        // 执行顺序 点击按钮前  点击按钮后  已经点击按钮了(点几次执行几次)
        console.log('点击按钮前'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值