/*
* pending:初始化成功
* fulfilled:成功
* rejected:失败
* */ function Promise(executor) {// 执行器
this.status = 'pending';
this.value = undefined;
this.reason = undefined;
this.fulfilledCallback = [];
this.rejectCallback = [];
let resolve = (value)=>{
if(this.status=='pending'){
this.status = 'resolve';
this.value = value;
this.fulfilledCallback.forEach(fn=>fn())
}
};
let reject = (reason)=>{
if(this.status =='pending'){
this.status = 'reject';
this.reason = reason;
this.rejectCallback.forEach(fn=>fn())
}
};
try{
executor(resolve,reject)
}catch(e){
reject(e)
}
}
Promise.prototype.then = function (onfulfilled,onrejected) {
if(this.status == 'resolve'){
onfulfilled(this.value)
}
if(this.status == 'reject'){
onrejected(this.reason)
}
if(this.status == 'pending'){
this.fulfilledCallback.push(()=>{
onfulfilled(this.value)
});
this.rejectCallback.push(()=>{
onrejected(this.reason)
})
}
}; var a = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(10)
})
});
a.then((res)=>{
console.log(res);
});

最新文章

  1. spring mvc controller间跳转 重定向 传参
  2. SqlServer数据冗余的问题和解决
  3. Ubuntu 配置 no-ip
  4. TypePerf.exe使用命令查找计数器
  5. logoff remote desktop sessions via command line tools
  6. JavaScript如何检查网站是可以访问
  7. poj - 2377 Bad Cowtractors&&poj 2395 Out of Hay(最大生成树)
  8. 分享一组Rpg Marker人物行走,游戏素材图片,共20张图片
  9. 在C#中调用另一个应用程序或命令行(.exe 带参数)<zz>
  10. 手工添加Linux防火墙端口
  11. 发送一个简单的HTTP GET请求并且取回响应。
  12. iOS: 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
  13. 转发:[Python]内存管理
  14. lombk在IDEA中报ClassNotFoundException错误
  15. 腾讯地图JS API实现带方向箭头的线路Polyline
  16. spark-shell启动报错:Yarn application has already ended! It might have been killed or unable to launch application master
  17. [转载] 一致性hash算法释义
  18. Transform介绍(Unity3D开发之二)
  19. U-Boot Makefile分析(1)配置脚本mkconfig分析
  20. jQuery实现跨域请求

热门文章

  1. Gitlab源码库里代码提交后,如何触发jenkins自动构建?
  2. Java异步NIO框架Netty实现高性能高并发
  3. 利用ELK分析Nginx日志生产实战(高清多图)
  4. day08(字符编码,字符与字节,文件操作)
  5. (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)
  6. mysql一个非常实用解决sql查询优化的函数explain
  7. MySQL select into outfile 和 load data infile数据跨库转移
  8. html实体命名
  9. Kafka学习笔记-如何保证高可用
  10. 第一章 Python基本语法元素分析(二)