简单实现promise封装
核心思想即把then后的函数提取出来等待resolve后执行callbacks
function _Promise(fn, callbacks) {var value = null;var callbacks = callbacks || [];var state = 'pending';var _this = this;//注册所有的回调函数this.then = function (fulfilled, rejected) {//链式promisereturn new _Promise(function (resolv, rejec) {try {if (state == 'pending') {callbacks.push(fulfilled);return;}if (state == 'fulfilled') {var data = fulfilled(value) || value;resolv(data);return;}if (state == 'rejected') {var data = rejected(value);resolv(data);return;}} catch (e) {_this.catch(e);}}, callbacks);}//执行所有的回调函数function resolve(valueNew) {value = valueNew;state = 'fulfilled';execute();}//执行所有的回调函数function reject(valueNew) {value = valueNew;state = 'rejected';execute();}function execute() {//加入延时机制 防止promise里面有同步函数 导致resolve先执行 then还没注册上函数setTimeout(function () {callbacks.forEach(function (cb) {value = cb(value);});}, 0);}this.catch = function (e) {console.error(JSON.stringify(e));}fn(resolve, reject); }
复制代码
转载于:https://juejin.im/post/5d47b6ee518825052a032173
简单实现promise封装相关推荐
- 利用ES6进行Promise封装总结
原生Promise解析 简介 promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和强大. promise简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一 ...
- promise ajax 队列,ES6中的promise,从使用promise封装ajax说起
1为啥要用promise? js是单线程的,理论上所有代码都是同步的,从上到下一行行执行.然而就这样傻傻解析运行js的话,碰到较重的任务时,会阻塞进程,如发送一个用户是否登录验证请求,请求完成响应之前 ...
- 深度解析利用ES6进行Promise封装总结
这篇文章主要介绍了如何利用ES6进行Promise封装总结,文中通过示例代码介绍的非常详细,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. 原生P ...
- 小程序promise封装post请求_Promise封装微信小程序的Request请求
回调地狱一向是影响开发和维护的症结所在,无数个success()的嵌套再嵌套,导致代码层级颇深,盘一次逻辑都要费劲千辛万苦,ES6语法中的Promise,便是专为解决JS中异步请求回调的信任问题而存在 ...
- JS 利用promise封装setTimeout So easy
JS 利用promise封装setTimeout So easy 就是一句代码那么简单 , 实际应用可以结合async / await~ /*** @description:延迟|等待函数* @ret ...
- 分享:用promise封装ajax
用promise封装ajax var ajaxOptions = {url: 'url',method: 'GET',async: true,data: null,dataType: 'text', ...
- 简单介绍 ghost封装过程
简单介绍 ghost封装过程 图片: 描述:1 图片: 描述:2 图片: 描述:3 图片: 描述:4 图片: 描述:5 图片: 描述:8 图片: 描述:11 图片: 描述:12 图片: 描述:13 图 ...
- 小程序promise封装post请求_微信小程序promise封装get/post请求
微信小程序promise封装get/post请求 2020-07-04 20:42:49 微信小程序promise封装get/post请求 叶子兔 2018-10-10 08:55:30 1056 ...
- promise是什么?简单分析promise原理
预备知识 回调函数 高级函数 发布-订阅模式 promise A+ 规范 promise是什么,能干什么 Promise是异步编程的一种解决方案,它可以解决异步回调地狱的问题,防止层层嵌套对程序代码带 ...
最新文章
- 为什么大部分人做不了架构师?
- 数字经济时代,算力到底有多重要?
- sdh管理单元指针_C语言学习|指针的介绍
- 分布式,微信小程序 服务器保持登入态解决方案,
- 【JavaScript 学习笔记】创建对象
- java查看sql视图_SQL Server查看视图定义总结
- sob攻略超详细攻略_重庆旅游攻略~超详细攻略大全!必看篇!!
- qt下实现文件的拖拽打开
- 在网上找来的几个大牛,忽然觉得自己来参加ACM倒也不是一件错误的事情,梦想总是要有的,万一成了呢。
- FFmpeg转码流程详解
- 与传统的物理服务器对比,云服务器有哪些优势
- FFmpeg入门详解之114:DirectShow读取摄像头数据
- js判断浏览器类型,判断ie内核,webkit
- 大数据文字游戏_移动的大数据指南:千字以内的文章传播率最高
- python中fill函数_在figu中旋转matplotlib的fill函数
- java 进销存 springmvc SSM crm 项目 系统
- HTML 标签 hr hr /
- 【PS推荐】Photoshop CC2017安装教程及注意事项【如何修改安装路径】
- jjjjjjjjjjjjjj
- MYSQL POLARDB 学习系列之 拆解 POLARDB 6 Auto-Scaling 与性能优化 (翻译)
热门文章
- Vue.js示例:GitHub提交(watch数据,created钩子,filters过滤); 网格组件(功能:1.检索,2排序);...
- 多线程初探:三种方式创建多线程详细示例
- k8s nodeport下访问请求未被分发到所有node的排错(转)
- python:argparse命令行解析模块详解
- Java实现单例模式
- 文档型数据库设计模式-如何存储树形数据
- Visual C# 2010 实现资源管理器
- TSVNCache占用CPU的解决办法
- delphi XE2-新的里程碑
- Oracle Golden Gate 系列十五 -- GG Trails 说明