react中使用Woker线程发送异步ajax请求

news/2024/6/14 22:26:10 标签: react.js, ajax, javascript

简单封装使用

1 创建woker

javascript">const workercode = () => {
  this.onmessage = function (e) {
    let that = this;
    let params = JSON.parse(e.data);
    if (params.type === "xhr") {
      let xhr = new XMLHttpRequest();
      xhr.open(params.method, params.url);
      xhr.send();
      xhr.onreadystatechange = function () {
        if (this.readyState === 4) {
          that.postMessage(this.responseText);
        }
      };
    }
  };
};
// 把脚本代码转为string
let code = workercode.toString();
code = code.substring(code.indexOf("{") + 1, code.lastIndexOf("}"));

const blob = new Blob([code], { type: "application/javascript" });
const worker_script = URL.createObjectURL(blob);

module.exports = worker_script;

2 runwoker

javascript">import worker_script from "util/woker";

function runWoker(params) {
  return new Promise(function (resolve, reject) {
    let woker = new Worker(worker_script);
    woker.postMessage(JSON.stringify(params));
    woker.addEventListener("message", (e) => {
      resolve(JSON.parse(e.data));
    });
  });
}
export default runWoker;

3 使用

javascript">runWoker({
      type: "xhr",
      method: "GET",
      url: "http://127.0.0.1:8000/home/news/?area=AREA%257C88cff55c-aaa4-e2e0",
    }).then((res) => {
      setNewsHouse(res.body);
    });

http://www.niftyadmin.cn/n/1206062.html

相关文章

bootstrap的两种在input框里面增加一个图标的方式

具体代码如下&#xff1a; <div class"input-group"><div class"input-icon-group"><input type"text" class"form-control fc-clear" /> <span id"scan" data-role"md" class"md md-c…

【vue3源码】响应式系统设计

响应式系统的核心思路 ● 需要将对象进行get和set双向绑定使用的是proxy ● 既然是双向绑定那么get的时候就需要进行收集依赖函数 set的时候需要触发依赖 ● 收集和触发依赖我们使用的是Map&#xff0c;而Map下每个属性对应的依赖函数使用的是Set来储存 实现思路 首先是响应…

机器人RPA-01

【RPA之家视频教程】20.桌面录制UiPath_u UiPath RPA教程 https://www.bilibili.com/video/BV1CA411b7Cv 【RPA之家视频教程】19.在印地语中的UiPath_u UiPath RPA教程中创建变量UiPath并传递默认值 https://www.bilibili.com/video/BV1fa4y1x7C5 【RPA之家视频教程】18.在UiPa…

【云扩RPA】OpenBrowser_Quiz

关于关闭标签页组件&#xff0c;下列哪项说法是正确的&#xff1f; 必须指定要关闭哪个标签默认关闭第一个标签此组件仅能在打开浏览器和绑定浏览器中使用选择器属性值可为空 关于打开浏览器组件&#xff0c;下列哪项说法是正确的&#xff1f; 可选择使用何种浏览器运行流程…

【vue3源码】响应式系统设计2(分支切换问题)

引入 上节已经把响应式基本架子已经搭建出来&#xff0c;但还是有一些比较隐式的问题存在 分支切换问题effect嵌套问题递归调用 这节我们主要针对分支切换的问题来进行解决 问题引入 上一节的整体代码 /*** 双向绑定* 响应式系统的简单实现*/ let obj {name: "zs&q…

(原)torch中提示Unwritable object userdata at ?.callback.self.XXX.threads.__gc__

转载请注明出处&#xff1a; http://www.cnblogs.com/darkknightzh/p/6549432.html 参考网址: https://github.com/torch/threads/issues/82 修改别人程序的时候&#xff0c;使用torch多线程load数据&#xff0c;遇到了这个问题&#xff1a; FATAL THREAD PANIC:(write) XXX/to…

【云扩RPA】WaitElementAppear

判断登录界面是否出现 此节课程以上次课程为基础&#xff0c;继续讲解流程决策为True时的运行流程 准备工作 打开上节课程的流程文件 错误处理 搜索错误捕捉&#xff08;Try Catch&#xff09;组件并拖拽至设计面板&#xff0c;重命名为2.ConsolePanelPreview将其和流程决…

TCP协议客户端读取文本文件,服务器端输出到控制台

package cn.idcast10;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket;/** 客户端读取文本文件&…