chensenlai 10988628a0 语音房项目初始化 | %!s(int64=5) %!d(string=hai) anos | |
---|---|---|
.. | ||
Promise | %!s(int64=5) %!d(string=hai) anos | |
browser-source | %!s(int64=5) %!d(string=hai) anos | |
dist | %!s(int64=5) %!d(string=hai) anos | |
src | %!s(int64=5) %!d(string=hai) anos | |
test | %!s(int64=5) %!d(string=hai) anos | |
.npmignore | %!s(int64=5) %!d(string=hai) anos | |
README.md | %!s(int64=5) %!d(string=hai) anos | |
gulpfile.js | %!s(int64=5) %!d(string=hai) anos | |
index.js | %!s(int64=5) %!d(string=hai) anos | |
package.json | %!s(int64=5) %!d(string=hai) anos |
基于promise扩展一些常用方法
##类扩展
var ep = require("extend-promise");
var P = ep.extendClass(Promise,{});
//ep.extendClass(Promise) 不传第二个参数则扩展到Promise上.
defer P.defer() //return deferrer Object
//defer.promise //Pormise对像
//defer.resolve(value) //解决
//defer.reject(err) //拒绝
//返回promise
P.resolve(value)
P.reject(obj)
P.all(PromiseArray)
P.allMap(PromiseArray/map)
P.map(array,mapfun,options) //遍历执行, options.concurrency 可配置并发,
P.any(PromiseArray) //返回最先改变状态的Promise状态
P.delay(time,value) //延迟指定时间
P.some(PromiseArray,count) //获取最快解决Promise值;
//CPS函数相关
P.nfcall(fun,...arg) //转换CPS函数
P.nfapply(fun,[arg]) //转换CPS函数
//返回function
var newfn = P.denodeify(fun) //封装CPS函数
Promise原型扩展:
var ep = require("extend-promise");
var Promise = require("easy-promise"); //建议扩展原生Promise,可以扩展第三方Promise实现
ep.extendPrototype(Promise);
//返回promise
promise = Promise.resolve(1);
//promise 扩展后如下
.then({resolveFun},{rejectFun})
.catch({rejectFun})
.catchOf({errType},{rejectFun}) //与catch不同的是 reject理由如果与errType相等/ instanceof 为 true时 才交由`rejectFun`处理,否则继续传递.
.error({rejectFun}) //为.catchOf(Error,{rejectFun})的语法糖
.finali({function})
.done({resolveFun},{rejectFun}) //同then,但不再返回promise,未解决的错会值接抛出