JavaScript 中,用 async + await 和直接同步方式执行有什么区别?意义是什么?

你一定要先理解以下重点内容:

你要把 JS 里执行分为两种。

第一种是实打实必须由 JS 线程执行的,比如做一些去算一个文件的 MD5 值,这种一般没人写异步,没好处,都是同步计算。

第二种不是由 JS 线程去执行,只是 JS 把任务提交给它,然后傻了吧唧的啥也不干等它完成并返回结果给自己。比如你调用浏览器接口去网络上下载图片,此时你的 JS 线程是把任务提交给了浏览器,然后一直等浏览器把结果返回给你。干活的是浏览器不是你 JS 线程。

对于不干活的情况,就得用异步的写法了,不然轻则执行效率低下,重则页面卡死,毕竟页面上那么多事等着 JS 线程去干,特别是现在的网站内容都是靠 JS 动态加载的。

以前使用的方法是回调,就是调用接口时同时传一个函数,告诉浏览器或谁执行完任务时调用函数,然后我们在函数中放一些需要执行完任务才能处理的事情。

比如让浏览器去下图片,我们就把显示图片放到函数中,这个函数就被称为回调函数。你们常见的什么 onload 、onready 都是这个意思。

function download(callback) {
    // 这个下载花费 5 秒钟
    let file = "我是文件哦"
    setTimeout(() => callback(file), 5000)
}

console.log("开始执行了~")
console.log("先去下个图片~")

// 下载好了通知我就行,不等你了
download((f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值