写点什么

理解异步

作者:大熊G
  • 2022 年 6 月 14 日
  • 本文字数:700 字

    阅读完需:约 2 分钟

理解异步

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

什么是同步

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

    const i = 1;    i++;
复制代码

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

什么是异步

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

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

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


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

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


发布于: 刚刚阅读数: 4
用户头像

大熊G

关注

每天都在写bug的硬核男人 2022.06.02 加入

前端

评论

发布
暂无评论
理解异步_JavaScript_大熊G_InfoQ写作社区