首页 > 其他分享 >xhr fetch 监控响应进度

xhr fetch 监控响应进度

时间:2024-05-01 20:55:05浏览次数:24  
标签:const onProgress xhr 进度 loaded total fetch

xhr axios
fetch umi-request

功能点 XHR fetch
基本的请求能力
基本的获取响应能力
监控请求进度 x
监控响应进度
servie worker 中是否能用 x
控制cookie的携带 x
控制重定向 x
请求取消
自定义referrer x
x
api风格 event promise
活跃度 停止更新 不断更新
export function request(options={}){
    const {url,method='GET',onProgress,data=null}=options;
    return new Promise((resolve)=>{
        const xhr=new XMLHttpRequest();
        xhr.addEventListener('readystatechange',()=>{
            if(xhr.readyState===xhr.DONE){
                resolve(xhr.responseText)
            }
        })
xhr.upload.addEventListener('progress',e=>{
    console.log(e.loaded,e.total); //请求监听
})
        xhr.addEventListener('progress',(e)=>{//响应监听
            console.log(e.loaded,e.total); //目前过来 总的
            onProgress&&onProgress({
                loaded:e.loaded,
                total:e.total
            })
        })
        xhr.open(method,url)
        xhr.send(data)

    })

}


// 监控响应进度
export function request(options){
    const {url,method='GET',onProgress,data=null}=options;
    return new Promise(async (resolve)=>{
const resp=await fetch(url,{
    method,
    body:data,
})
        const total=+resp.headers.get('content-length'); //总的数据量
        const decoder=new TextDecoder()
        let body='';
        const reader=resp.body.getReader();//可读流
        let loaded=0;//当前的数据量
        while(1){
            const {done,value}=await reader.read()
            if(done){
                break;
            }
            loaded+=value.length;
            body+=decoder.decode(value)
            onProgress&&onProgress({
                loaded,total
            })
        }
    })

}

标签:const,onProgress,xhr,进度,loaded,total,fetch
From: https://www.cnblogs.com/7c89/p/18169636

相关文章

  • FETCH JSON ERROR IN MIK-SSR-WEB
    背景在日常巡检时发现,MIK-SSR-WEB的Grafana监控中出现500的异常响应。原因分析1.Grafana监控在监控面板中发现,503响应不为0  2.Skywalkingl链路在Skywalking中过滤错误响应,发现所以异常的URL均为/mik-web-static/map/2c-prd/released-menu/michaels_menu......
  • 在电脑桌面上制作可视化进度日程待办清单,效率翻倍
    对于使用电脑办公的上班族来说,提升工作效率和保证任务的准时完成是至关重要的。在电脑桌面上制作可视化进度日程待办清单,是实现这一目标的有效方法。因为这样能够让我们一目了然地了解当天及未来的工作任务,从而合理规划时间,确保每个任务都能得到妥善处理。那么我们如何在Windows......
  • Intel Pentium III CPU(Coppermine, Tualatin) L2 Cache Latency, Hardware Prefetch
    这几天,偶然的机会想到了困扰自己和其他网友多年的IntelPentiumIII系列处理器缓存延迟(L2CacheLatency),以及图拉丁核心版本是否支持硬件预取(HardwarePrefetch)问题。手头的支持图拉丁核心处理器的i815主板还在正常服役中,铜矿和图拉丁核心处理器也都有,所以就专门做了这一期调查,感......
  • 11-项目进度管理(3/10 十大管理)
    10.1管理基础10.1.1项目进度计划的定义和总要求项目进度计划是一种用于沟通和管理干系人期望的工具,为绩效报告提供依据。编制进度计划一般步骤:首先选择进度计划方法,例如关键路径法;然后将项目特定数据,如活动、计划日期、持续时间、资源、依赖关系和制约因素等输入进度计划编......
  • javascript高级编程系列 - 使用fetch发送http请求
    fetch采用模块化设计,api分散在多个对象上(Response对象,Request对象,Header对象),fetch通过数据流(stream对象)处理数据可以分块读取,有利于提高网站性能。发送GET请求fetch函数只传递一个url,默认以get方法发送请求。promisefetch(url).then(response=>response.json()).......
  • 进度跟踪和成本跟踪实验
      接着实验    ......
  • 记录个简单的进度条同步显示方法
    //进度条同步显示的方法publicvoidCommonProgressHandle(Action<Action>bizAct,intmax,stringmsg){using(SimpleProgresssp=newSimpleProgress()){sp.Message=msg;sp.Position=0;......
  • 微信小程序canvas2d实现可滑动的圆环形进度条
     最近在搞一个微信小程序,有一个圆环的进度条,而且要求颜色要渐变的,本来想用秋云插件实现,但是秋云的插件不能滑动这个进度条,后面用canvas实现成品效果图:避坑:  <canvasid="myCanvas"type="2d"></canvas><canvascanvas-id="myCanvas"></canvas>两个canvas标签,一......
  • HarmonyOS NEXT应用开发—在Native侧实现进度通知功能
    介绍本示例通过模拟下载场景介绍如何将Native的进度信息实时同步到ArkTS侧。效果图预览使用说明点击“StartDownload“按钮后,Native侧启动子线程模拟下载任务Native侧启动子线程模拟下载,并通过Arkts的回调函数将进度信息实时传递到Arkts侧实现思路前端进度条使用Progr......
  • [Unit testing] Testing a fetch promise
    Code:importtype{paths}from"@octokit/openapi-types";typeOrgRepoResponse=paths["/repos/{owner}/{repo}"]["get"]["responses"]["200"]["content"]["application/json"];exportty......