起了一个好玩的名字:Promising,主要是想深入学习一下 Promise 到底是怎么回事,最后发现照着规范的条条框框就能差不多直译出来。
提供的 API 有:
Promising()Promising.resolve()Promising.reject()Promising.prototype.then()Promising.prototype.catch()没有提供的 API 有:
Promising.all()Promising.race()额外提供了两个辅助测试的方法 mayBeResolved 和 mayBeRejected,能配合 Mocha 使用:
// test.js
const { mayBeResolved, mayBeRejected } = require('./helper')
describe('testing static methods: ', () => {
it('should be resolved', () => {
mayBeResolved(Promising.resolve(42)).then((value) => {
expect(value).to.equal(42)
})
})
it('should be rejected', () => {
mayBeRejected(Promising.reject('oops')).catch(reason => {
expect(reason).to.equal('oops')
})
})
})
最后附上 Repo 地址:Promising
1
8qwe24657913 2017-08-21 18:09:00 +08:00 setTimeout 是 task,Promise 是 microtask,建议参考 es6-promise 用 MutationObserver https://github.com/stefanpenner/es6-promise/blob/master/lib/es6-promise/asap.js
|
2
7Brant OP @8qwe24657913 谢谢指出,确实应该是 microtask
|