Web Worker模拟选票

时间: 2018-12-05阅读: 831标签: Worker

思路:五个人(5个div窗口模拟)同时进行抢票,有百分之十的几率可以抢到票,抢到票后对应的窗口(即随机生成的数大于等于0小于9的情况)会编程天蓝色,没抢到票的窗口(即随机生成的数大于9小于100的情况)会变成红色  


html源码: 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>html5拖拽效果</title>
    <style>
        div {
            width: 150px;
            height: 150px;
            float: left;
            margin-right: 10px;
            border: black thin solid;
            text-align: center;
        }

        .hasTicket {
        / / 表示抢到票后将对应的窗口的背景颜色修改为天蓝色 width: 150 px;
            height: 150px;
            float: left;
            margin-right: 10px;
            border: black thin solid;
            text-align: center;
            background: aqua;
        }

        .noTicket {
        / / 表示未抢到票后将对应的窗口的背景颜色修改为天红色 width: 150 px;
            height: 150px;
            float: left;
            margin-right: 10px;
            border: black thin solid;
            text-align: center;
            background: red;
        }
    </style>
</head>

<body>
<div id="div0">抢票者 1</div>
<div id="div1">抢票者 2</div>
<div id="div2">抢票者 3</div>
<div id="div3">抢票者 4</div>
<div id="div4">抢票者 5</div>
<button id="start" value="开始抢票">开始抢票</button>
</body>
</html>
<script type="text/JavaScript">
    var button = document.getElementById("start");
    button.onclick = function (event) {
        if (typeof(Worker) !== "undefined") {
            var workers = [];//用来存储worker对象
            for (var i = 0; i < 5; i++) {
                var worker = new Worker("snatchTickets.js");
                worker.onmessage = getmessage;
                workers.push(worker);
            }

            function getmessage(event) {
                var target = event.target;//从workers数组中获得当前worker对象的角标
                var t = workers.indexOf(target);//查找当前worker在workers数组中的下标,这里worker在数组中的下标与div的id值是一一对应的
                var div = document.getElementById("div" + t);//根据角标,取得对应的窗口
                if (event.data == 1) {//若获取的数据为1,表示抢到票了,将对应div的css样式改为hasTicket
                    div.className = "hasTicket";
                } else {
                    div.className = "noTicket";//否则,将对应div的css样式改为noTicket
                }
            }
        } else {
            alert("你的浏览器不支持Worker元素,建议更换浏览器或者使用更高版本的浏览器");
        }
    };
</script>


 snatchTickets.js对应的逻辑控制代码

var rand=Math.floor(Math.random()*100);//取得0-99的一个随机数
if(rand<=9){
    postMessage(1);//若是在0-9之间,则表示抢到票了,传递数据1
}else{
    postMessage(0);//否则,表示没有抢到票,传递数据0
}


效果图:

未点击开始抢票按钮前:


点击抢票按钮以后: 

 


原文地址:https://www.cnblogs.com/MrZWJ/p/10068294.html 

 

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1501

关闭

动态创建 Web Worker 实践指南

作为前端,在消费接口提供的数据时,往往由于数据实际分布在不同地方(如一部分存储在 ODPS ,而另一部分可能更适合在应用初始化时从本地载入内存)而需要对数据进行区分处理。当然,交互的实现可能也会需要很重的计算逻辑

Node.js中的Worker Threads

想要明白workers,首先需要明白node是怎样构成的。当一个node进程开始,它其实是:一个进程:是指一个全局对象,这个对象能够访问任何地方,并且包含当前处理时的此时信息。

web worker是什么?理解并使用web worker

Web Worker 是为了解决 JavaScript 在浏览器环境中没有多线程的问题。正常形况下,浏览器执行某段程序的时候会阻塞直到运行结束后在恢复到正常状态,而HTML5的Web Worker就是为了解决这个问题,提升程序的执行效率。

Web Worker 详细介绍_Web Workers的使用

web worker 是运行在后台的 JavaScript,独立于其他脚本,也就是说在Javascript单线程执行的基础上,开启一个子线程,进行程序处理,而不影响主线程的执行。Service Worker 是一个由事件驱动的 worker,它由源和路径组成,以加载 .js 文件的方式实现的。

关于Web Workers你需要了解的7件事

Web Workers允许你在后台运行JavaScript代码,而不会阻止web用户界面。Web Workers可以提高网页的整体性能,还可以增强用户体验。Web Workers有两种风格 ——专用Web Workers和共享Web Workers

Service Worker的生命周期

service worker的生命周期是它最复杂的部分。如果你不知道它在努力做什么和这么做的优势,你会感到它在跟你对着干。但一旦你知道了它的原理,你就可以给用户提供无缝的,优雅而不突兀的更新。一种同时具备网站应用和原生应用优势的体验。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!