说明

Promise函数对node后端和前端的重要性就不必多说了,很大一部分程度上解决了恶心的嵌套的回调!现在跟着我来写一个简单的Promise函数吧!

使用

阮一峰老师说的非常好了,有点忘记的同学传送门进去

开始

不啰嗦直接上代码,给你个眼神自己去体会

class PromiseAProto {then(resolve, reject){this.resolves = (this.resolves || []).concat(resolve || [])this.rejects = (this.rejects || []).concat(reject || [])return this;}
}
class PromiseA extends PromiseAProto{    constructor(cb){super(cb)cb(() => {setTimeout(() => {var resolve = this.resolves.shift();var ret = resolve && resolve();if (this.isPromiseA(ret)) {Object.assign(ret, this)}}, 0)})}isPromiseA(cb){return cb instanceof this.constructor}
}复制代码

测试

test1

new PromiseA((resolve, reject) => {resolve()console.log('hello');
}).then(() => {setTimeout(() => {console.log("world")}, 2000)
})// 输出为hello   二秒之后输出world复制代码

test2

new PromiseA((resolve, reject) => {resolve()console.log('hello');
}).then(() => {console.log("world")return new PromiseA((resolve) => {setTimeout(() => {resolve();}, 1000)console.log("hello1")})
}).then(() => {console.log("over1")
})
// 输出为hello world hello1  一秒之后输出over1复制代码

25行代码实现Promise函数相关推荐

  1. 25行AS3代码编程大赛的第一名!25行代码构造的AS3游戏

    叫做Marius Heil的AS开发者使用AS3构造了一个25行代码的AS3游戏,并且获得了25行AS3代码编程大赛的第一名! /** * 25-Line ActionScript Contest E ...

  2. 代码内容变成图片_网站只剩25行代码,真有程序员“删库跑路”?

    "可能我删了数据才会轻松吧 可能我格了硬盘才会休息吧 可能逃出了公司我就跑到天边 可能我还没找到 那个BUG--" 曾经,有一位程序员,在某个加班的深夜,一边听着<可能否&g ...

  3. [Unity实战]仅需25行代码 安卓/ios打包跳过Unity启动Logo动画...[新手开箱可用][全平台支持]

    [Unity实战]仅需25行代码 安卓/ios打包跳过Unity启动Logo动画 参考文章 接上一篇文章-unity隐私协议包通过审查 1.直接上代码: 2.打包后使用效果展示: 3.源码地址: 参考 ...

  4. (~解题报告~)L1-020 帅到没朋友 (20分)——25行代码AC

    立志用更少的代码做更高效的表达 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋 ...

  5. 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)

    励志用少的代码做高效表达 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需 ...

  6. python闹钟界面源码_Python GUI 教程 25行代码写一个小闹钟

    今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. ...

  7. 25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)

    励志用少的代码做高效表达 问题描述: 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同.   如图:p1.png, p2.png, p3.png 就是可行的分割法.   试计算: ...

  8. 25行代码AC——习题5-7 打印队列(Printer Queue,UVa 12100)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-12100 题目描述: 我们需要用打印机打印任务.每个任务都有1~9间的优先级,优先级越高,任务越急. 打印机的运作方式:从打印队列里取出一 ...

  9. 25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 还记得童年的网页小游戏吗?今天带大家爬取4399小游戏网站的数据,游戏名字+链接地址 目标网 ...

最新文章

  1. 把qss添加进qrc文件_PDF怎么压缩?一招教你快速压缩PDF文件
  2. HDU3434数学题
  3. Android 判断字符串是否为空
  4. 干货 | 20多门AI网络课程资源(附链接)
  5. Linux crontab 命令格式与具体样例
  6. java 1.7 新io 实践 NIO2
  7. HTML经典模板总结(地址)
  8. XCode调试器LLDB
  9. 在VS2013中打开Nuget
  10. 【javascript 变量和作用域】
  11. 《Java程序设计》实验报告——Java的对象与类
  12. 0基础怎么做可视化大屏?2种可以节省95%时间的方法教给你
  13. BZOJ2654/COGS1764 [2012国家集训队]tree(陈立杰) [生成树,二分]
  14. oracle standby同步,PRIMARY Standby不能同步问题
  15. python常用算法有哪些_python常见排序算法基础教程
  16. Linux CentOS 7.2 安装 Tomcat 8 服务器
  17. mysql 索引 范围扫描_MySql学习笔记(六):扫描范围
  18. TimeBake:part1
  19. test 零食店 (dp+二分)
  20. 导航一体机端口测试软件,导航端口查看器

热门文章

  1. RabbitMQ学习总结(5)——发布和订阅实例详解
  2. Nuget服务的搭建-打包-上传-删除
  3. php PDO php.ini
  4. 使用WCF传输DataTable:DataTable和Xml格式的字符串相互转换(C#)
  5. PostgreSQL在何处处理 sql查询之五十二
  6. 我的第一个SharePoint2013 App
  7. 究竟该不该“勃”!!!
  8. fetch git pull 切换_每天提交 Git 太烦?直接用 Python 就好了!
  9. Go 语言编程 — make 和 new
  10. QCOW2 — Overview