IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Angular 中 web worker的使用 -> 正文阅读

[JavaScript知识库]Angular 中 web worker的使用

web worker就是在web应用程序中使用的worker。这个worker是独立于web主线程的,在后台运行的线程。

web worker的优点就是可以将工作交给独立的其他线程去做,这样就不会阻塞主线程。

第一步:ng? g? webWorker webWorkerName 用于创建一个Worker 线程?

在创建的woker文件中,编写你需要采用多线程做的事件,我这里是一个保存文件数据的功能

/// <reference lib="webworker" />

let startindex='';

let offset='';

let save_path='';

let curPatientId='';

// 用ng 命令会自动生成一个worker.ts文件

// ?在worker.ts文件 监听事件

addEventListener('message',function(data) {

? const response = `worker response to ${data}`;

? startindex=data.data['startindex'];

? offset=data.data["offset"];

? save_path=data.data["path"];

? curPatientId=data.data['curPatientId']

? save_wavedata(startindex,offset,save_path,curPatientId)

});

let count=0

?function save_wavedata(startindex,offset,save_path,curPatientId){

? setInterval(() => {

? ? // 在js中http协议的使用

? ? ? let url = "http" + "://" + "127.0.0.1" + "/gin/history/wavedata";

? ? ? console.log('save_wavedata',url);

? ? ? var data1=new FormData();

? ? ? data1.append( "start",startindex);

? ? ? data1.append("patientid",curPatientId);

? ? ? data1.append("path",save_path);

? ? ? data1.append("offset",offset);

? ? ? let content='';

? ? ? const http=new XMLHttpRequest();

? ? ? ? http.open('post',url,true);

? ? ? ? http.send(data1);

? ? ? ? http.οnlοad=function() {

? ? ? ? ? // console.log('http1',http.responseText)

? ? ? ? ? content=JSON.parse(http.responseText)

? ? ? ? ? startindex=content["result"]['start'];

? ? ? ? ? offset=content["result"]["offset"];

? ? ? ? ? save_path=content["result"]["path"];

? ? ? ? ? console.log('startindex2',startindex,offset,save_path,curPatientId)

? ? ? ? ? // close()

? ? ? ? ? // console.log('startindex3',startindex,offset,save_path,curPatientId)

? ? ? ? }

? ? ? },20000)

}

在angular文件中

//app.component.ts
import { Component,OnInit,OnDestroy } from '@angular/core';
?
@Component({
? selector: 'app-root',
? templateUrl: './app.component.html',
? styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit,OnDestroy {
? //定义一个worker
? private worker?:Worker = undefined;
?
? //向worker线程发送数据
? getMessage(){
? ? this.worker.postMessage({type:'get'});
? }
? ngOnInit(): void {
? ? this.startWorker();
? }
? ngOnDestroy(): void {
? ? this.stopWorker();
? }
? //新建线程
? startWorker():void{
? ? if(typeof Worker !== 'undefined'){
? ? ? this.worker = new Worker('./webworker/count.worker',{ type: 'module' });//不加type会找不到文件
?
? ? ? // 监听worker线程发送过来的数据
? ? ? this.worker.onmessage = (event) =>{
? ? ? ? console.log(event.data);
? ? ? }
? ? ? // 抓取worker线程的报错
? ? ? this.worker.onerror = (error) =>{
? ? ? ? console.error(error);
? ? ? }
? ? } else {
? ? ? console.warn('do not support worker!');
? ? }
? }
? stopWorker():void{
? ? if(this.worker){
? ? ? this.worker.postMessage({type:'stopAll'});
? ? ? // 关闭主线程
? ? ? this.worker.terminate();
? ? ? this.worker = undefined;
? ? }
? }
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:26:06  更:2022-03-24 00:29:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:31:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码