前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理解异步

理解异步

作者头像
大熊G
发布2022-11-14 16:47:35
3070
发布2022-11-14 16:47:35
举报

theme: channing-cyan

这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战

异步就是同步的对立统一,我们要说异步的话,得先了解同步。

什么是同步

我们都要知道JavaScript是单线程时间循环模型,同步就相当于一条流水线,比如加工产品,我们得先采购原材料,再运输到加工厂,然后再加工,最后变成产品出售或者使用。在代码中,同步就是按照顺序执行我们所输入的指令,每条指令都会按照我们编写的先后顺序执行。

代码语言:javascript
复制
    const i = 1;
    i++;

这个例子就是先定义i等于1,然后i + 1等于i,也就是i等于2,我们可以很直观的看到程序执行的状态。

什么是异步

相对于上面的同步,我们可以明显感觉到同步在一些地方是不合适的,比如我们加载页面,如果我们需要获取后台数据来渲染到页面上,但是下面还有好多要执行的操作,也许网络延迟,我们这个没获取到,后面的代码是执行不了的,那么页面就会白屏,非常影响用户体验。我们来写一个简单的异步操作小栗子(设置定时器)。

代码语言:javascript
复制
     const i = 1;
     setTimeout(() => {
         console.log('jackson')
     }, 2000);
     console.log(i)

大家可以复制代码或者控制台测试一下,这里会先输出i的值,也就是1,然后才输出我的英文名Jackson。

异步操作不容易推断,虽然这个小栗子我们肉眼可见它的执行。它相当于设置了一个子线程,因为子线程独立于主线程,所以即使出现阻塞也不会影响主线程的运行。但是子线程有一个局限:一旦发射了以后就会与主线程失去同步,我们没有办法确定这个子线程多会儿执行结束,一般来说我们会设置一个异步回调来实现异步操作返回的结果。

回调函数就是上面我们用settimeout设定让它2秒后执行输出我的名字。当然还有其他异步定义和组织操作,我们这篇文章只了解一下异步是什么,后面再来为大家讲解其他异步定义和操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: channing-cyan
    • 什么是同步
      • 什么是异步
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档