如何用一个定时器做延时队列 如何用一个定时器做延时队列起因起因是团队内小伙伴遇到了一个有意思的题,大概内容是这样:如何实现类似 Message 组件(全局通知提示,几秒钟自动消失的那种)的调度功能。这个题这样子看很简单,大概是这样 const showMessage = msg => new Promise(resolve => { const message = Message.show( 2023-03-10 Javascript 前端
node是如何同步写入文件的 node 是如何同步写入文件的最近在知乎上被邀请了一个问题,觉得比较有趣就试着回答了一下。 众所周知,nodejs 的 io 是非阻塞模型,但是还提供了同步接口,这一点确实有趣,那到底是怎么实现这些文件写入的呢? 以下的源码都是基于 node 16.17.0 node 部分我们知道 fs 中写入文件的 api: writeFile和writeFileSync,那他们到底做了什么呢,我们可以先看源码 2022-08-24 前端 NodeJs
跨域到底是怎么回事-四个跨域协定 前面我分别讲解了跨域的基本情况和解决方案,和CORS 到底怎么回事,分别详细介绍了跨域的原因、资源请求限制的问题和方案,也完整、详细地介绍了 CORS 的所有相关内容,以及部分容易出现但难发现的问题方案。 作为本系列的最后一期,将会讲解剩余的跨域安全部分。前面两篇着重讲解的是 CORS,根本原则是不允许 js 脚本获取跨域资源内容,那其实除此之外还有别的协定如下: CORB(Cross-Orig 2022-02-05 HTTP 前端 浏览器
跨域到底是怎么回事-CORS详解 CORS(Cross-Origin Resource Sharing)很多人可能会混淆,觉得 CORS 是安全协议之类的,其实不然,CORS(Cross-Origin Resource Sharing,跨域资源共享)其实是一个系统,由一些列 HTTP headers 组成,这些 HTTP headers 决定了浏览器是否阻止前端 js 代码获取跨域请求的响应。就是一种提供给服务端,让其绕过 SOP 2021-07-22 HTTP Javascript 前端
跨域是怎么回事 跨域是怎么回事从一个常见的问题开篇request has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 相信上面的错误很多时候都能碰到,一般发生在前端发起请求时,而可能很多开发都不知道怎么解决,甚至是谁去解决。其实这 2021-04-08 Javascript 前端 浏览器
变量提升和函数声明提升 变量提升和函数声明提升关于 Javascript 中的变量提升(variable hoisting)可能在前端界已经耳熟能详了,可能你会觉得设计初衷是什么呢,或者这里有出于什么考虑以及解决了什么问题呢?因为这块“特性”成为了前端人必须了解并绕过的坑,也可能成为了不少前端人的困扰。 其实根据 Brendan Eich 的说法: 大概意思就是,变量提升是函数提升的意外结果。(手动狗头) 题目下面开始先 2021-02-08 Javascript 前端
执行上下文和作用域 执行上下文和作用域执行上下文是一个描述代码运行时所在环境的抽象概念,JavaScript 引擎再开始执行代码前,会创建全局执行上下文 ,全局代码(不属于任何函数的代码)在全局执行上下文中执行。 全局执行上下文 在每个 JS 程序中只有一个。 每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中(execution stack)。在函数执行完后,栈将其环境弹出,把控制 2021-01-01 Javascript 前端
301、302、303、307、308 301、302、303、307、3081、HTTP 状态码HTTP 状态码是由 RFC2616 规范定义的,用以表示服务器超文本传输协议响应状态的 3 位数字代码。状态码是协助开发者掌握请求是否运转正常的一个标志,常见的大概有 200,304,404,500 等。每个状态码都有其代表的意义,而且也发挥着不同的作用。 2、HTTP 3xxHTTP 状态码 3xx 一类的都是重定向(Redirec 2020-11-26 HTTP
不准确的定时器 不准确的定时器什么是定时器javascript 的 globalThis 中,分别有三个 api:setTimeout、setInterval、setImmediate,他们都是定时器的一种,意思是允许在某个时刻开始执行,尽管他们看上去很相似,不过其实各不相同,甚至在不同运行环境也各自不同。 setTimeout:用于设置一个定时器,在到期后执行一个函数。 setInterval:用于设置一个轮 2020-09-30 Javascript 前端
Vue2 响应式原理 Vue2 响应式原理当前笔记为2.6.11版本的 Vue 很多人对 Vue 的响应式原理大概能说得出,但是完整深入的流程可能不太清晰,其实中间还是有很多有趣的部分,下面将会从初始化开始讲起整个响应式系统的原理。部分代码片段中会有些个人理解所加的注解,注意留意一下。 1. 开始先从vue/src/core/instance/index.js进入,这里是 Vue 的构造函数,下面调用了initMixi 2020-09-11 Javascript Vue 前端