美文网首页
项目中遇到的异步

项目中遇到的异步

作者: A郑家庆 | 来源:发表于2019-07-11 16:34 被阅读0次

前言

我们在做项目的时候会遇到很多异步操作,但是不知道它们什么时候开始执行、它们执行的顺序以及使用场景,比如$nextTick、document.ready、window.onload,下面我们就一一开始讲解

document.ready和window.onload对比

页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),而是onload,表示页面包含图片等文件在内的所有元素都加载完成。

区别
  • document.ready:在Dom节点创建完成后执行,如果有多个定义则依次执行
  • window.onload:在页面所有资源加载完成后执行,如果有多个定义则只执行最后一个
  • document.ready在window.onload前执行
Dom文档加载步骤
  • 解析HTML结构
  • 加载外部的脚本和样式文件
  • 解析并执行脚本代码
  • 执行document.ready内代码
  • 加载图片或者媒体文件等二进制资源
  • 页面加载完毕,执行window.onload内代码

$nextTick

Dom更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,获取更新后的Dom,通过setTimeout(fn, 0)也可以同样获取到。

使用场景

在created、mounted阶段如果需要操作渲染后的视图,也要使用nextTick方法。
⚠️注意:官方文档说明:注意mounted不会承诺所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以用vm.$nextTick替换掉mounted。

总结:settimeout、接口、异步都会有不同的线程控制,它们互不影响,所以它们也不会互相堵塞,但是有的线程是互斥的,比如js线程和GUI线程是互斥的

相关文章

网友评论

      本文标题:项目中遇到的异步

      本文链接:https://www.haomeiwen.com/subject/sacrkctx.html