一个简易的、移动端专用的 Promise。
Promise/A+ spec. see: https://promisesaplus.com/
使用 APM 安装:
apmjs install @searchfe/promise
RequireJS 示例使用:
require.config({
baseUrl: "/amd_modules"
})
require(['@searchfe/promise'], function(Promise){
Promise.resolve('hello').then(console.log)
})
在 Promises/A+ 的基础上新增了若干 bluebird 风格的 API。现有 API 如下:
#then()
#catch()
#finally()
.resolve()
.reject()
.all()
.fromCallback()
.mapSeries()
按照 V8 的 Promise 实现,未捕获的 Promise 异常会触发一个名为 unhandledrejection
的 PromiseRejectionEvent
。该 Promise 实现中,也会尝试触发这个事件。
由于浏览器端没有 nextTick
API,清空调用栈是借由其他机制实现的。
这些机制的 Fallback 顺序如下(序号越小优先级越高):
setImmediate
(W3C 标准)MessageChannel.postMessage
(支持 Worker 的浏览器)window.postMessage
(非 IE8)setTimeout
(IE 8 及以下)
- 移动端专用:使用了移动端支持良好的 ES5 特性,IE 中使用可能会有问题
- AMD 环境:目前只支持 AMD 环境