位置: 编程技术 - 正文

简单实现异步编程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图标(代码少)(网页上面的收藏夹显示)

  • 计提生产应税产品的分录
  • 如何合伙注册公司
  • 小金额收据入账后需要汇算清缴吗
  • 分批付款 发票怎么开
  • 基建贷款贴息账户有哪些
  • 公司现金支票取现用途怎么填写
  • 服务业暂估成本分录
  • 债务重组与资产重组
  • 收到实物返利
  • 国外客户给你寄来礼物怎么感谢
  • 从个人处借款的法律规定
  • 税控系统维护费账务处理
  • 合伙企业可以弥补以前年度亏损吗
  • 小规模商贸公司成本核算方法
  • 免征增值税和附加税区别
  • 无偿赠送不得抵扣吗?
  • 成本费用总额包括信用减值损失吗
  • 附加税的税率是什么
  • 企业没有土地证
  • 质押已至票据到期日
  • 调整以前年度错账如何调整报表
  • 税前扣除税后扣除
  • 品牌使用费分录
  • php怎么创建数据表
  • RPDFLchr.exe - RPDFLchr是什么进程 有什么用
  • php过滤emoji
  • 代理公司变更地址多少钱
  • 购进的货物
  • 公司出租房租怎么交税
  • 谷歌浏览器历史记录插件
  • php做
  • 设备经营租赁属于什么行业
  • 农村合作社免所得税吗
  • 如何计算企业年度人均产值
  • php解析json对象
  • 前端开发软件哪个最好
  • php取二维数组的一组内容
  • 企业取得土地使用权可能作为什么核算
  • 愚公全名
  • redishi
  • 企业合并的会计处理方法
  • 电子承兑汇票到期怎么收款
  • 实收资本退回给股东需要交印花税吗
  • php验证码源码
  • pytest unittest
  • 网银转账往来款怎么做账
  • 中华人民共和国企业所得税年度纳税申报表
  • 固定资产办理竣工结算之后的处理方式
  • 预付检测费未收到发票
  • 递延资产放在资产负债表哪里
  • 每个月房租
  • 长期股权投资的初始计量
  • 成本费用利润率一般在什么范围
  • 营改增题目
  • 购进农产品直接销售核定扣除
  • 在sql server中使用对象资源管理器和SQL
  • sql忽略null
  • mysqldump导出csv文件
  • CentOs7.x安装Mysql的详细教程
  • win8.1的开始菜单在哪
  • win8.1怎么安装软件
  • ati2plab.exe是什么进程 ati2plab进程安全吗
  • centos获取权限
  • win7升级win10系统要多久
  • win1021h2版本怎么样
  • ExtJS 2.0实用简明教程 之Ext类库简介
  • opengl 编程
  • node+express+ejs制作简单页面上手指南
  • 批处理获取本地连接名称
  • javascript的应用
  • 手机运行node.js
  • javascript要怎么学
  • 自定义圆角控件
  • jquery选项卡
  • jquery 扩展事件
  • 国家税务总局2012年20号公告
  • 医保12333查询系统
  • 增值税发票综合服务平台升级
  • 中国个人所得税是多少?
  • 一般纳税人的进项票必须当月认证吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设