js webworkers与websocket

1.webworkers

<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <meta http-equiv="X-UA-Compatible" content="ie=edge">
	    <title>Document</title>
	</head>
	<body>
	    <!-- 
	        webworkers是H5提供的一个js多线程解决方案
	        我们可以将一些大计算量的代码交给webworker运行而不冻结用户界面
	        由于子线程完全受主线程控制,且不得操作DOM
	        所以并没有改变js单线程的本质
	     -->
	    <input type="text" placeholder="数值" id='number'>
	    <button onclick={calc()}>计算</button>
	    <script>
	        function fibonaci(n){
	            return n<=2?1:fibonaci(n-1)+fibonaci(n-2);
	        }
	
	        let input =document.getElementById('number');
	
	        function calc(){
	            let number = input.value;
	            // let result = fibonaci(number);
	            // alert(result);
	
	            // 创建一个worker对象
	            let worker = new Worker('./websocket.js');
	
	            // 向分线程发送数据
	            work.postMessage(number);
	
	            // 接受worker传过来的数据
	            worker.onmessage = (event)=>{
	                alert(event.data);
	            }
	        }
	    </script>
	</body>
	</html>

websocket.js

function fibonaci(n){
 return n<=2?1:fibonaci(n-1)+fibonaci(n-2);
}

// 获取主线程发送过来的数据
let onmessage = function(event){
    let number = event.data;
    let result = fibonaci(number);
    postMessage(result);
}

注意:webworker不能操作DOM,this也不是Window

2.websocket

var ws = new WebSocket("wss://127.0.0.1:8080");

ws.onopen = function(evt) {  //绑定连接事件
  console.log("Connection open ..."); 
  ws.send("发送的数据");
};

ws.onmessage = function(evt) {//绑定收到消息事件
  console.log( "Received Message: " + evt.data);
};

ws.onclose = function(evt) { //绑定关闭或断开连接事件
  console.log("Connection closed.");
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值