<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dbxx_ly的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dbxx_ly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dbxx_ly]]></copyright><item><title><![CDATA[即时通讯的实现：短轮询、长轮询、SSE 和 WebSocket 间的区别？]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/148685525</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/148685525</guid><author>dbxx_ly</author><pubDate>Mon, 16 Jun 2025 10:31:54 +0800</pubDate><description><![CDATA[这种方式实现的即时通信，本质上还是浏览器发送请求，服务器接受请求的一个过程，通过让客户端不断的进行请求，使得客户端能够模拟实时地收到服务器端的数据的变化。是 HTML5 定义的一个新协议议，与传统的 http 协议不同，该协议允许由服务器主动的向客户端推送信息。但是，有一种变通方法，就是服务器向客户端声明，，而 SSE 的方式是单向通信的，只能由服务器端向客户端推送信息，如果客户端需要发送信息就是属于下一个 http 请求了。也就是说，发送的不是一次性的数据包，而是一个数据流，会连续不断地发送过来。]]></description><category></category></item><item><title><![CDATA[关于async await]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/148452034</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/148452034</guid><author>dbxx_ly</author><pubDate>Thu, 05 Jun 2025 15:48:52 +0800</pubDate><description><![CDATA[总之：只要使用await  本行下的都会被推到微任务队列等待执行--如果当前函数是异步，需要resolve/reject。await 后面函数如果是异步函数，要返回一个新的new Promise--resolve()/reject()用了await 关键字 函数并不是异步函数 他会先执行函数，再把await 后面的代码转化成微任务。情况三：后面是数字被包装成promise.resolve()什么时候await后面的代码不会被触发呢？🧠 为啥结果是这样嘞？✅ 如何避免这个问题？]]></description><category></category></item><item><title><![CDATA[踩坑map方法]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/148169286</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/148169286</guid><author>dbxx_ly</author><pubDate>Fri, 23 May 2025 15:26:26 +0800</pubDate><description><![CDATA[场景：处理数组对应中图片以heif 和  heic结尾数据结构：想让uri合理合规。]]></description><category></category></item><item><title><![CDATA[搞懂react 中的hook 不能写在if， 循环的原因]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/148107446</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/148107446</guid><author>dbxx_ly</author><pubDate>Wed, 21 May 2025 11:27:01 +0800</pubDate><description><![CDATA[setName确实知道自己的索引，但 React 更依赖“每次组件执行时的 Hook 调用顺序”来管理状态。只要顺序变了，React 就会搞混谁是谁。因此，Hook 必须始终在组件顶层、稳定顺序调用。]]></description><category></category></item><item><title><![CDATA[关于Etag 和last-modified区别]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147928290</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147928290</guid><author>dbxx_ly</author><pubDate>Tue, 13 May 2025 16:49:44 +0800</pubDate><description><![CDATA[二次请求携带关键字段和日期  If-Modified-Since: Mon, 18 Oct 2023 09:30:00 GMT。拿到资源以及Last-Modified: Mon, 18 Oct 2023 09:30:00 GMT。判断资源是否过期->200状态码，新的资源和Last-Modified /  304状态码，拿缓存。协商请求：发送请求到服务端->判断是否过期->没过期返回304直接拿缓存/过期从服务端获取。200状态码，新的资源和Last-Modified /  304状态码，拿缓存。]]></description><category></category></item><item><title><![CDATA[关于sessionstorage localstorage]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147798136</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147798136</guid><author>dbxx_ly</author><pubDate>Thu, 08 May 2025 17:58:27 +0800</pubDate><description><![CDATA[场景：点击单号，window.open(`/page/dispatch/project/list/${expId}/${orgCode}`)打开新界面，新界面搜索出订单详情 弹窗展示。摸索：会话隔离 ，即使我在A界面改了sessionstorage,详情窗口再没关闭情况下也保持原有数据1。解决：改用localstorage，同源窗口公用一套数据 ，根据更新可控制详情展示，且始终打卡一个窗口。疑点：为啥第一次可以带设置的sessionstorage?效果：一致保证开一个弹窗，且每次都可展开详情。]]></description><category></category></item><item><title><![CDATA[手写call,apply,bind]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147790855</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147790855</guid><author>dbxx_ly</author><pubDate>Thu, 08 May 2025 14:46:22 +0800</pubDate><description><![CDATA[手写bind 返回一个函数，传递多次参数 支持直接调用。new调用（this指向丢失）原理：在指向对象里加上这个调用函数这个方法即可。改变this调用 指向第一个参数。]]></description><category></category></item><item><title><![CDATA[手写深拷贝 简易版]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147780770</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147780770</guid><author>dbxx_ly</author><pubDate>Thu, 08 May 2025 09:36:10 +0800</pubDate><description><![CDATA[遍历对象，注意：for in会遍历原型链上的属性 因此要二次判断。拿到参数 判断是不是对象或者不是null。属性还是对象要递归 不是直接返回。判断要拷贝的类型是对象还是数组。]]></description><category></category></item><item><title><![CDATA[手写promse中的then 简易版]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147771575</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147771575</guid><author>dbxx_ly</author><pubDate>Wed, 07 May 2025 18:17:40 +0800</pubDate><description><![CDATA[1.明确then 入参 和返回 以及执行时机  入参是两个函数  返回时一个新的promise。]]></description><category></category></item><item><title><![CDATA[手写promise 简易版 构造函数]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147770184</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147770184</guid><author>dbxx_ly</author><pubDate>Wed, 07 May 2025 17:16:56 +0800</pubDate><description><![CDATA[try catch 只能捕获同步错误 promise也没解决这个问题。如果promise抛出错误 需要利用try catch 捕获。状态变化，调用函数，且只能调用一次。接受一个函数，且函数立即执行。函数有两个参数，且都为函数。]]></description><category></category></item><item><title><![CDATA[函数柯里化]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147728425</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147728425</guid><author>dbxx_ly</author><pubDate>Tue, 06 May 2025 10:09:42 +0800</pubDate><description><![CDATA[柯里化是编程语言中的一个通用的概念（不只是Js，其他很多语言也有柯里化），是指把接收多个参数的函数变换成接收单一参数的函数，嵌套返回直到所有参数都被使用并返回最终结果。柯里化不会调用函数，它只是对函数进行转换。写法1：（只能接受每次传递一个参数）写法2：（可接受 单参或多餐）]]></description><category></category></item><item><title><![CDATA[手写promise.all和 promise.race]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/147239553</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/147239553</guid><author>dbxx_ly</author><pubDate>Tue, 15 Apr 2025 09:48:06 +0800</pubDate><description><![CDATA[2.接受的参数每一个都是一个promise，不是也要包装成一个promise ，返回是一个新的promise。2.接受的参数每一个都是一个promise，不是也要包装成一个promise ，返回是一个新的promise。1.promise.all 接受参数是可迭代对象 ,获取长度不能用length ，size。1.promise.race接受参数是可迭代对象 ,获取长度不能用length ，size。3.全部成功  按照次序返回成功结果数组，一个失败，直接返回失败。]]></description><category></category></item><item><title><![CDATA[关于浏览器全面禁用三方cookie]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/146180306</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/146180306</guid><author>dbxx_ly</author><pubDate>Tue, 11 Mar 2025 15:35:43 +0800</pubDate><description><![CDATA[HTTP协议是无状态的协议，如果你在同一个客户端向服务器发送多次请求，服务器不会知道这些请求来自同一客户端。这正是HTTP协议得以广泛应用的原因，试想一下，如果它是有状态协议，你必须要时刻与服务器建立链接，那么如果连接意外断开，整个会话就会丢失，重新连接之后一般需要从头开始；而如果是无状态协议，使得会话与连接本身独立起来，这样即使连接断开了，会话状态也不会受到严重伤害，保持会话也不需要保持连接本身。如果HTTP。]]></description><category></category></item><item><title><![CDATA[对象基本方法合集]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/145922206</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/145922206</guid><author>dbxx_ly</author><pubDate>Fri, 28 Feb 2025 10:58:40 +0800</pubDate><description><![CDATA[Object.getOwnPropertyNames(obj)  // 所有属性名（包括不可枚举，字符串类型）Object.ownKeys(obj) //所有属性 无论是否可枚举（最完整获取对象属性的方式）Object.keys(obj)          // 可枚举的属性名（必须字符串类型）Object.getOwnPropertySymbols(obj) // Symbol属性。Object.entries(obj)       // 可枚举的属性键值对。// 检查属性可枚举性。]]></description><category></category></item><item><title><![CDATA[对vue响应式理解]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/145909576</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/145909576</guid><author>dbxx_ly</author><pubDate>Thu, 27 Feb 2025 17:36:56 +0800</pubDate><description><![CDATA[派发更新该属性，触发多个watcher（一个组件只有一个watcher,watcher变化，组件重新渲染，所以数据更新）vuex也是类似实现原理 他收集多个组件的watcher ,实现多个组件的状态管理 一个改 全都改。根据数据渲染界面调用dep实例，收集依赖，收集当前watcher观测的数据变化。遍历data中数据 利用defineProperty变成get set形式。dep（一个数据对应一个dep ,一个dep容器管理一堆订阅者）watcher （一个组件一个，在一个数组中不允许重复）]]></description><category></category></item><item><title><![CDATA[大文件上传]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/145870124</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/145870124</guid><author>dbxx_ly</author><pubDate>Wed, 26 Feb 2025 09:52:11 +0800</pubDate><description><![CDATA[1.分片：获取文件--获取尺寸--按照分片大小切割--利用md5计算出单个chunk的hash和整文件hash---创建formData实例 ，传给后端--利用promise.all全部传递成功调用后端完成接口实现。]]></description><category></category></item><item><title><![CDATA[记录react-hooks中useEffect执行时机]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/145143337</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/145143337</guid><author>dbxx_ly</author><pubDate>Tue, 14 Jan 2025 17:07:14 +0800</pubDate><description><![CDATA[虽然有没有写没写依赖项 都会挂载 更新的都执行 但二者存在差别。（每次变化都会先消除上次的count旧输数据）]]></description><category></category></item><item><title><![CDATA[react中table使用sorter排序 触发分页默认置为1的问题]]></title><link>https://blog.youkuaiyun.com/dbxx_ly/article/details/144840799</link><guid>https://blog.youkuaiyun.com/dbxx_ly/article/details/144840799</guid><author>dbxx_ly</author><pubDate>Tue, 31 Dec 2024 09:43:34 +0800</pubDate><description><![CDATA[table中使用onchange 会自动监听以上三个属性 一个变化 都会触发，不解的是一旦点击排序 会从第三页跳到首页，利用。分页中的监听来提前设置当前页码 保证不被替换 确保在当前页面实现掉接口排序。利用后端排序，使用sorter 总是触发分页逻辑 看了框架发现。]]></description><category></category></item></channel></rss>