让我们再聊聊Promise的实现

摘要

关于 Promise 的实现网上已经有很多文章,最推荐的是这篇《史上最易读懂的 Promise/A+ 完全实现》。但其中then实现的部分代码中有些小问题。

在上述文章的基础上,本篇给出更全面的用例和代码,来尽可能阐述清楚一些看起来 “magic” 的做法。

所有代码(Promise 以及相关方法)的实现存放在 github.com/dongyuanxin/diy-promise。关于.all().race()等方法的实现,请见《手写 Promise 的相关方法》一文。

手写Promise的相关方法

摘要

Promise 作为 JS 社区的异步解决方案,为开发者提供了.then()Promise.resolve()Promise.reject()等基本方法。除此之外,为了更方便地组合和控制多个的 Promise 实例,也提供了.all().race()等方法。

本文会在 Promise 的基本方法上,手动实现更高级的方法,来加深对 Promise 的理解:

  • 🤔️ 实现Promise.all
  • 🤔️ 实现Promise.race
  • 🤔️ 实现Promise.any
  • 🤔️ 实现Promise.allSettled
  • 🤔️ 实现Promise.finally

⚠️ 完整代码和用例请到github.com/dongyuanxin/diy-promise

基础篇:TypeScript用法与实战

这篇笔记,主要记录了自己最近在 typescript 实践中的经验。总结了常见的用法。

实战篇:当Typescript遇上Koa的时候

最近在做运营侧中台项目的重构,目前的选型是 koa2+typescript。在实际生产中,切实体会到了 typescript 类型带来的好处。

文章出处:xxoo521.com

FileAPI 文件操作实战

介绍

HTML5 为我们提供了 File API 相关规范。主要涉及 File 接口FileReader 对象

本文整理了兼容性检测、文件选择、属性读取、文件读取、进度监控、大文件分片上传以及拖拽上传等开发中常见的前端文件操作。

浏览器的常见考点

问题一览:

  • 加载页面和渲染过程
  • 渲染线程和 JS 引擎线程
  • 重绘和回流
  • 页面生命周期
  • property 和 attribute 区别
  • cookie、localStorage 以及 sessionStorage
  • AJAX && 跨域

axios全局代理实战

在项目中,为了方便使用,对axios进行了二次封装,原因如下:

  1. 由于内网服务器的安全策略,put、delete 等方法的请求无法发送到后台
  2. 为了方便快速对接后端服务器,api 接口的前缀、安全策略过期时间等通用配置应该抽离

微信网页登录逻辑与实现

现在的网站开发,都绕不开微信登录(毕竟微信已经成为国民工具)。虽然文档已经写得很详细,但是对于没有经验的开发者还是容易踩坑。

所以,专门记录一下微信网页认证的交互逻辑,也方便自己日后回查:

  1. 加载微信网页 sdk
  2. 绘制登陆二维码:新 tab 页面绘制 / 本页面 iframe 绘制
  3. 用户扫码登陆,前端跳入回调网址
  4. 回调网址进一步做逻辑处理,如果是页内 iframe 绘制二维码,需要通知顶级页

HTML5原生拖放事件的学习与实践

前言

之前学习了 HTML5 的拖放事件,开发中也用到了拖拽组件。为了厘清整体的逻辑,专门做了一个小例子。

具体实现的效果也很简单:元素可以在容器中任意拖动,元素被移入容器的时候,还会有相关样式的改变已达到更好的展示效果。

例子基本运用了拖放事件的全部事件,并且尽量简洁的展示了出来。特此记录。

ES6重难点整理

👇 内容速览 👇

  • let 和 const
  • Set 和 Map
  • Generator 和 yield
  • Promise、async/await 介绍
  • Proxy 代理器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×