位置: 编程技术 - 正文

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

  • 美国个税计算器2021计算器
  • 补缴关税税率
  • 跨区域涉税事项反馈表怎么填
  • 开了发票不做收入的账务处理
  • 工程物资什么时候结转到开发成本里面
  • 所得税忘了计提如何做会计分录还有结转
  • 电子税务局怎么注册
  • 个人转款到对公账户会计分录
  • 销售收入包括应收销货款
  • 清算多交的增值税如何结转做分录?
  • 库存商品对外销售会计分录
  • 用党费返还款购置资产应如何账务处理?
  • 三证合一办理流程及费用
  • 厂部管理人员工资属于什么会计科目
  • 土地罚款可以计入成本吗?
  • 购买方开具红字信息表流程
  • 无票收入记账多的进项发票怎么处理?
  • 没有建筑资质能办安全生产许可证吗
  • 公司一直零报税,有问题吗
  • 学校有没有纳税人识别号
  • 享受高新技术企业优惠的条件之一
  • 没有发票的固定资产可以税前扣除吗
  • 发放工资的会计科目
  • 广告公司认定一般多少钱
  • 月销售额小于10万的一般纳税人减免
  • 如何理解总分机的概念
  • 收到法院执行款专户打来的钱
  • mysql高级语句
  • wcu.exe是什么
  • win11可以触屏吗
  • 个税非居民是什么意思
  • 代理 linux
  • 货物退回的会计处理
  • 赔偿款财务如何做账
  • php连接mysql数据库的几种方式及区别
  • 单位购买降暑用品
  • 资产处置损益要写明细账吗
  • js实现dialog
  • php8.0 特性
  • php微信公众号开源框架
  • vue3ts
  • javascript学什么内容
  • 出售自建不动产怎么交税
  • 现金流量表要填满吗
  • 提供营业执照范本图片
  • sql server中变量声明的命令是什么
  • 工会经费计税依据比例
  • 销售不动产统一发票英文翻译
  • 会计信息采集每年都要重新写吗
  • 未使用的固定资产
  • sql参数是什么意思
  • sqlserver2005使用
  • 私车公用怎么办理手续
  • 职工薪酬实际发生额忘记填会有风险吗
  • 工程的挂靠取得收入怎么做账?
  • 其他应付款贷方正数表示什么意思
  • 小规模纳税人购进商品会计分录
  • 职工薪酬怎么核算
  • 增值税留抵退税申请流程
  • SQL Server COALESCE函数详解及实例
  • centos7访问百度的命令
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • window10运行框
  • win7记事本可以保存的格式
  • win10win8
  • Win10系统安装步骤
  • win7操作技巧
  • 怎么把喜欢的图片设置成电脑壁纸
  • nodejs writestream
  • 图形学题目
  • javascript常用类型
  • php和mysql的结合是目前web开发中的黄金组合
  • Protecting Content With AssetBundle[Unity]
  • 参数传递的方式有几种?有什么区别?
  • c语言node定义
  • javascript怎么样
  • 前方高能(莞尔wr)晋江
  • python traits
  • 广西12366医保缴费
  • 土地使用税一般谁交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设