女王控的博客

全部

230 篇文章

手写 async await 的最简实现

示例 思路 对于这个简单的案例来说,如果我们把它用 generator 函数表达,会是怎么样的呢? 我们知道,generator 函数是不会自动执行的,每一次调用它的 next 方法,会停留在下一个 yield 的位置。 利用这个特性,我们只要编写一个自动执行的函数,就可以让这个 generator 函数完全实现 async 函数的功能。 那么大体上的思路已经确定了,asyncToGenerator 接受一个 generator 函数,返回一个 promise, 关键就在于,里面用 yield… »

Sequelize一对多查询解决方案

前置知识 需求背景 已知始发站、终点站,如何查出满足条件的方案线路?即根据一个表关联多个表时如何查询相关字段? sql 语句 根据以上的前置知识可得出一对多下的查询应该这样写: Sequelize 下的解决方案 从表的设计上考虑:将始发站、终点站写在主表中,无需考虑一对多的问题 根据以上的 sql 语句利用 Sequelize 去关联 最终为了实现上的简便,直接使用方案 1 // TODO 多对多方案也需要延伸下 »

基于nodemon实现监听文件链接变化

项目架构 公司项目分为以下几种架构: 主项目-扩展项目:扩展项目前端独立,是以 npm 包的形式安装到主项目,后端可以独立编译,但不能独立运行,即后端与主项目共用一套,主项目需要对扩展项目编译出的后端代码进行监听来实现增量编译 主项目-子项目:微前端架构,子项目前、后端独立可运行 需求背景 需要解决主项目-扩展项目架构下主项目的后端不能增量编译的问题 技术选型 选型 优点 缺点 直接在 node_modules 目录下开发 主项目已实现对 node_modules 下扩展项目的监听 每次 npm… »

Promise 实现原理

简化版 代码 这个 Promise 的实现不考虑任何异常情况,只考虑代码最简短,从而便于读者理解核心的异步链式调用原理。 核心案例 本文将围绕这个最核心的案例来讲,这段代码的表现如下: 500ms 后输出 1 500ms 后输出 2 实现 构造函数 首先来实现 Promise 构造函数 好,写到这里先回过头来看案例 分开来看,fn 就是用户传的函数,这个函数内部调用了 resolve 函数后,就会把 promise 实例上的 cbs 全部执行一遍。 到此为止我们还不知道 cbs… »

Vim快捷键入门

预览 i Insert 模式,按 ESC 回到 Normal 模式,反正如果不知道现在是在什么模式下,就一直按 ESC,回到 Normal 模式,下面功能键都是在 Normal 模式触发的 此时 Insert 模式跟记事本一样 操作 vim 会经常在这两个模式下切换,就如同在记事本中你在选项卡和编辑内容窗口中切换一样 x Normal 模式下,按 x 删除当前光标向后所在的一个字符,大写字母 X 删除当前光标向前的字符 :wq 保存+退出 vim(:w 保存 :q… »

0%