js的async和await

1 async和await

  • async和await是都用于方法名称前的
  • await必须写在async方法的内部
  • await 只能使用在原生语法中,比如在 forEeach 结构中使用 await 是无法正常工作的,必须使用 for 循环的原生语法
  • 个人理解:async的方法对外是异步的,而使用了await的方法后,在内部是同步的
async fun1(){
    await fun2()
    await fun3()
    await fun4()
}

fun2、fun3、fun4会依次执行

2 element-ui中多个通知会叠加显示的问题

  • 原因:我的理解就是vue的缓冲机制,导致前面的还没执行完成,后面的获取不到前面的数据
  • 解决:需要等待前面的通知操作完成后,再执行后面的通知操作
async openMessages(){
        for(var i=0;i<2;i++){
               await this.$notify({  //等待前面的通知完成后再显示后面的
               title: '警告',
               message: '这是一条不会自动关闭的消息',
               type: 'warning',
               duration:10000,
       })
    }
}

参考文档:element-ui Notification重叠问题,原因及解决办法

3 websocket了解

  • WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议
  • WebSocket 允许服务端主动向客户端推送数据
  • 在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输(websocket是一直在线状态的,就像QQ一样)
  • 过程:
    • 先发出HTTP请求,建立一条连接
    • 通过send()方法向服务端发送请求,或通过onmessage事件接收服务端数据
    • 关闭连接
 function WebSocketTest(){
            if ("WebSocket" in window){
               alert("您的浏览器支持 WebSocket!");

               // 打开一个 web socket
               var ws = new WebSocket("ws://localhost:9998/echo");

               ws.onopen = function() {
                  // Web Socket 已连接上,使用 send() 方法发送数据
                  ws.send("发送数据");
                  alert("数据发送中...");
               };
                
               ws.onmessage = function (evt) { 
                  var received_msg = evt.data;
                  alert("数据已接收...");
               };
                
               ws.onclose = function(){ 
                  // 关闭 websocket
                  alert("连接已关闭..."); 
               };
            }else{
               // 浏览器不支持 WebSocket
               alert("您的浏览器不支持 WebSocket!");
            }
}

学习文档:菜鸟教程

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。