写了一个名叫 Promising 的 Promises/A+ 规范实现(以及配套测试方法)

2017-08-21 13:01:36 +08:00
 7Brant

起了一个好玩的名字:Promising,主要是想深入学习一下 Promise 到底是怎么回事,最后发现照着规范的条条框框就能差不多直译出来。

提供的 API 有:

没有提供的 API 有:

额外提供了两个辅助测试的方法 mayBeResolvedmayBeRejected,能配合 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

1889 次点击
所在节点    分享创造
2 条回复
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
7Brant
2017-08-21 21:29:32 +08:00
@8qwe24657913 谢谢指出,确实应该是 microtask

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX