Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
mochawesome-report
test
version2
.DS_Store
.gitignore
LICENSE
MyPromise.js
README.md
index.js
note.txt
package-lock.json
package.json

README.md

my-promise License: MIT

MyPromise.js是基于PromiseA+规范实现的一款 Mini Promise 类库。

作者

liuxuan

为什么会有这个项目

主要为了通过手写一个Promise去理解其内部的运行机制,当你可以自己实现一个Promise时,你还会被它难住吗?大家可以参考这个项目自己实现一个Promise,欢迎star和提issue。

已实现功能

  • PromiseA+规范的所有功能,主要是Promise.then()
  • Promise.resolve()
  • Promise.reject()
  • Promise.defer()
  • Promise.all()
  • Promise.race()
  • Promise.prototype.catch()
  • Promise.prototype.done()
  • Promise.prototype.finally()

使用方法

  1. 引入
let Promise = require('./MyPromise');
  1. 使用
new Promise((resolve, reject) => {
  resolve('my-promise');
}).then((data) => {
  console.log(data);
}).catch((error) => {
  console.log('error', error);
});

单元测试

  1. 自己写测试
  • index.js是使用该Promise的一些常用例子 test/test.js是基于 mocha + expect 写的几个单元测试例子
  1. 使用 promises-aplus-tests 测试
  • 安装
npm install promises-aplus-tests -g
  • 使用
promises-aplus-tests MyPromise.js

完整测试报告

该Promise实现 100% 通过 promises-aplus-tests 测试,完整单元测试报告见 mochawesome-report/mochawesome.html

You can’t perform that action at this time.