位置: 编程技术 - 正文

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

  • 一般纳税人的现金收入
  • 驾驶员培训服务税率
  • 其他应付款包括哪些内容口诀
  • 无形资产研发成功
  • 每月长摊金额如何分摊
  • 员工预支薪金怎么记账
  • 小规模税收优惠政策1%到什么时候
  • 进账多于销项怎样报税
  • 房地产企业在开盘前的销售费用是否可以在税前扣除
  • 招标代理资质办理好办吗
  • 控股合并的会计准则
  • 税控盘费用减免分录
  • 冲减应收帐款分录
  • 购电子承兑汇票差额计入什么科目?
  • 员工工资的扣点
  • 城建税如何纳税申报
  • 个体户生产经营所得税税率表
  • 财务抄税怎么抄
  • 业务招待费怎么调整应纳税所得额
  • 土地的契税和印花税记入什么科目
  • 税法对弥补亏损的规定是什么?
  • 按适用税率征税货物及劳务销售额
  • 小规模需要交所得税吗
  • 买免税产品
  • 调研费用表格
  • 宽带测速器在线测速
  • PHP:mb_encoding_aliases()的用法_mbstring函数
  • 登陆qq网页版手机会有提示吗
  • 支付宝账单有什么作用
  • 股权转让的条件和方式
  • 中拍网拍卖
  • 往来款项账务处理
  • cgtrader模型
  • 换出长期股权投资的会计处理
  • thinkphp excel
  • img标签铺满div
  • 如何快速使用验证码
  • php操作oracle
  • 退税发票在总局怎么开
  • 新版python
  • 雪花算法时钟回拨
  • 长期待摊费用为负数怎么调整
  • 个税申报本期收入是填应发还是实发
  • 织梦系统基本参数
  • nginx防盗链的作用
  • php_fileinfo不支持
  • 企业低值易耗品的摊销方法有
  • 增值税起征点适用于哪些
  • 个税中的免税收入都包括什么
  • 个税代扣代缴需要什么
  • 广告公司可以不开发票吗
  • 餐饮行业的个体工商户怎么交税
  • 销售赠送赠品会计处理
  • 货物已到发票未开具
  • 其他业务成本借方表示什么
  • 报销单据粘贴单模板
  • 普通发票的开具是?
  • 境外汇款免税
  • 简易征收可以开具3专票吗
  • 工业企业辅助生产费用的分配方法
  • 这么查看
  • MSSQL 数据库同步教程
  • win10的时间设置
  • centos 中文
  • windows7磁盘清理命令
  • 怎么看win8.1的版本
  • linux用户是什么意思
  • 调度器在操作系统中的作用
  • unity接sdk教程
  • windows下为啥没有观看电视的软件
  • python如何开发
  • asp.net mvc view
  • unity preferences
  • javascript要打开吗
  • java script怎么学
  • android自定义view的三大流程
  • 欢迎使用本公司智能语音电动车mp3
  • JavaScript程序设计形考任务第一次任务
  • 即使我单位是免税单位,签订合同时,也需要贴
  • 翡翠是否交消费税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设