Promise 最早出现在 1988 年,由 Barbara Liskov、Liuba Shrira 首创 (论文: Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems)。并且在语言 MultiLisp 和 Concurrent Prolog 中已经有了类似的实现。
描述了 MySQL 服务因硬盘空间不足而停止的排查与解决过程。通过检查根目录空间占用情况,发现 /root/.pm2 目录中日志文件过大,清理后成功启动 MySQL 服务,并进一步通过错误日志定位问题源头为 Node.js 服务的模块缺失。
讲解了 Gulp 的安装与使用,包括创建任务、压缩 JS 和 HTML 文件、合并多个文件,以及通过 gulp.watch() 实现文件变化监听与自动构建。使用 gulp-uglify、gulp-concat 等插件,通过输入、管道、输出的方式高效处理文件,提高开发效率。
介绍了 peerDependencies 的作用及使用场景,可用于避免依赖模块的版本冲突,解决多版本重复加载问题。通过在模块中声明 peerDependencies,项目和依赖模块可以共用同一版本的依赖,但需手动安装。案例展示了在项目中使用 peerDependencies 统一管理依赖版本的效果。
介绍了 requestIdleCallback 的用途及使用方法,用于在浏览器空闲时执行低优先级任务而不影响关键事件。示例展示了通过回调函数处理任务队列,并在空闲时间段逐步完成任务。案例中用于优化埋点数据上报,充分利用剩余空闲时间,提高任务处理效率。
介绍了删除 Git 分支的两种方法:使用 git branch -d 删除本地分支,使用 git push origin --delete 删除远程分支。两者分别适用于本地开发环境和远程仓库的分支管理。
介绍了在移动端开发中使用 Sass 和 Less 转换像素单位以适配设计稿。Sass 通过自定义函数 pxToEm 实现 px 转 em,Less 使用混合 (Mixins) pxToVW 将 px 转换为 vw,适用于不同场景的网页适配需求,提高开发效率。
介绍了 JavaScript 中 new 操作符的工作原理及其四个步骤,并通过 myNew 方法模拟实现 new 的功能。示例展示了构造函数返回普通对象或自定义对象时的不同行为,帮助理解 new 的内部机制及其应用场景。
介绍了浏览器缓存机制的两种方式:强缓存和协商缓存。强缓存通过 Expires 和 Cache-Control 实现,本地直接读取资源;协商缓存通过 Last-Modified / If-Modified-Since 和 Etag / If-None-Match 判断是否更新,命中时返回 304 状态码以减少资源加载。
介绍了函数柯里化的概念及其实现方法,通过递归调用将函数参数逐步累积,直至满足条件后执行。示例展示了柯里化在求和函数中的应用,通过重写 toString 方法实现链式调用并返回结果。