位置: 编程技术 - 正文

简单实现异步编程promise模式(简单实现异步编码的方法)

编辑:rootadmin

推荐整理分享简单实现异步编程promise模式(简单实现异步编码的方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:异步怎么实现,异步编程是什么意思,异步编程解决方案,简单实现异步编程的方法,异步编程的四种方法,如何实现异步编程,简单实现异步编码的方法,简单实现异步编程的方法,内容如对您有帮助,希望把文章链接给更多的朋友!

异步编程javascript异步编程, web2.0时代比较热门的编程方式,我们平时码的时候也或多或少用到,最典型的就是异步ajax,发送异步请求,绑定回调函数,请求响应之后调用指定的回调函数,没有阻塞其他代码的执行。还有像setTimeout方法同样也是异步执行回调的方法。

如果对异步编程还不太熟悉的话,直接戳 阮一峰大牛的教程 ,这篇文章介绍了四种异步编程的方式:

回调函数 事件监听 发布/订阅 promise模式

这几种方式的可维护性逐级递增,理解难度也逐级递增。这篇总结也是针对promise模式的。

promise模式那么多中异步编程的方式,为什么选择promise, 因为前面几种方式不够灵活,用起来不够痛快,不优雅。为了降低异步编程的复杂性,所以promise。

promise的核心是有一个promise对象,这个对象有一个重要的then()方法, 它用于指定回调函数,如:

promise模式在任何时刻都有三种状态:已完成(resolved),未完成(unfulfilled),那么then()方法就是为状态变化指定不同的回调函数,并总是返回一个promise对象,方便链式调用。

那promise模式下,返回的数据如何在各个回调函数之间传播呢,通过resolve方法,你可以将一个函数的返回值作为参数传递给另一个函数,并且将另一个函数的返回值作为参数再传递给下一个函数……像一条“链”一样无限的这么做下去。

代码实现通过创建一个Promise构造函数来实现promise模式:

简单实现异步编程promise模式(简单实现异步编码的方法)

代码分析我们可看到一个简单的promise对象的构造函数的结构:

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_d3feafedfde.png" alt="查看图片" />

callbacks: 用于管理回调函数 resolve: 请求成功时执行的方法 reject:请求失败时执行的方法 complete: 执行回调 then:绑定回调函数

测试:

结果:

一秒之后输出:

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_d3feb.png" alt="查看图片" />

分析:

这个函数通过setTimeout方法,异步传递一个数据1,并返回一个promise对象(必须)。

callback1和callback2都是要通过then方法注册的回调函数,其中callback1通过resolve方法把数据往下传递。

delay1()方法执行完,因为返回了一个promise对象,所以可以再调用then()方法为delay1()的setTimeout异步执行操作指定回调函数, 又因为then()方法也返回的是promise对象,所以还可以再调用then方法

一秒之后,当其他代码执行完成,开始执行异步代码promise.resolve('数据1');,这里调用promise的resolve()方法,指定了一个成功状态,并把数据1作为参数。

这其中比较难理解的就是第五,六步。

标签: 简单实现异步编码的方法

本文链接地址:https://www.jiuchutong.com/biancheng/377592.html 转载请保留说明!

上一篇:javascript中递归函数用法注意点(js中递归是什么意思)

下一篇:网页收藏夹显示ICO图标(代码少)(网页上面的收藏夹显示)

  • 什么时候要计提坏账准备
  • 小规模纳税人收到专票可以抵扣吗
  • 进口烟丝交多少税
  • 股权变更涉及哪些税种
  • 使用权资产是什么类科目
  • 报销筹建期间的房租押金怎么做会计分录?
  • 6000万居间费如何避税
  • 小规模纳税人增值税优惠政策2023
  • 事业单位自筹事业人员
  • 新公司前几个月发工资
  • 怎样算纳税人
  • 销售类合同审核要点
  • 货物毁损物流赔偿
  • 资本结构理论有哪些类型
  • 集团公司收购子公司
  • 中央下拨党费
  • 工程项目人工费比例
  • 个体工商户比如
  • 采用支票结算方式的基本业务处理程序
  • 没有发票的怎么报账
  • 企业计提房产税的会计处理正确的是
  • 国库集中支付账务处理
  • 开发成本怎么核算
  • 微软商店 低价区
  • 保险税前扣除比例是多少
  • 中拍网拍卖
  • 存货跌价准备减少
  • PHP:imagefilledpolygon()的用法_GD库图像处理函数
  • 虚拟机是什么意思
  • 商品仓储费用会增加吗
  • springboot基本结构
  • vue之间的组件通信
  • php支付接口开发
  • 进口设备退税如何计算
  • 场地退租协议样本
  • 企业年产值与年收入比例
  • 定期存款应计入会计哪个科目
  • 补记以前年度固定资产怎么记账
  • 手机银行对公账户转账要手续费吗
  • 什么情况下计入库存商品
  • 企业通讯费报销要求
  • 银行代发工资流程
  • 借款人和还款人不一致,收据打给谁
  • 建筑施工企业增值税税率调整时间
  • 人力资源行业企业成长
  • 进项税额是意思
  • 管理费用 暂估入账
  • 简易办法征收增值税是什么意思
  • 增值税免征印花税怎么算
  • 关联公司代缴社保劳动者怎么处理
  • 银行退回服务费怎么写分录
  • 出口退税申报的报关单无电子信息
  • 银行存款利息计算器在线计算器
  • 财务软件服务费合同印花税
  • 其他债权投资计提损失准备会引起资产总额增加吗
  • 固定资产减值损失怎么算
  • sql解析原理
  • sql中的coalesce
  • sqlserver升级到2016
  • centos7(core)
  • vista 安装
  • xp死机不动
  • 如何卸载windows media player
  • 教你如何解决蓝光机/KODI无法打开局域网smb共享的问题
  • rpcclient.exe - rpcclient是什么进程 有什么用
  • vps如何搭建ss
  • 第三人称控制器在平面上老掉
  • unity de
  • 关于模型视图变化的说法
  • jquery如何给div属性赋值
  • unity mobile3d
  • Node.js中的包管理工具是什么
  • Internet Explorer 8 beta 中文版与IE7共存的解决方法
  • python def用法理解
  • javascript题
  • JavaScript函数中,哪个语句可以返回值
  • js写后端用什么框架
  • jquery跨域请求有哪些方式
  • python中的stringvar
  • springmvc返回json格式的注解
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设