Promise学习笔记 7.11

1 Promise是什么

1.1 理解 

1. 抽象表达:
1) Promise 是一门新的技术(ES6 规范)
2) Promise 是 JS 中进行异步编程的新解决方案
备注:旧方案是单纯使用回调函数
2. 具体表达:
1) 从语法上来说: Promise 是一个构造函数
2) 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/
失败的结果值

1.2 promise 的状态改变

1. pending 变为 resolved
2. pending 变为 rejected
说明: 只有这 2 种, 且一个 promise 对象只能改变一次
无论变为成功还是失败, 都会有一个结果数据
成功的结果数据一般称为 value, 失败的结果数据一般称为 reason

1.3 promise 流程

1.4 promise 的使用

1、基本编码流程

<script>
// 1) 创建 promise 对象(pending 状态), 指定执行器函数
const p = new Promise((resolve, reject) => {
// 2) 在执行器函数中启动异步任务
setTimeout(() => {
const time = Date.now()
// 3) 根据结果做不同处理
// 3.1) 如果成功了, 调用 resolve(), 指定成功的 value, 变为 resolved 状态
if (time%2===1) {
resolve('成功的值 '+ time)
} else { // 3.2) 如果失败了, 调用 reject(), 指定失败的 reason, 变为rejected 状态
reject('失败的值' + time)
}
}, 2000)
})

2、使用 promise 封装基于定时器的异步
 

<script>
function doDelay(time) {
// 1. 创建 promise 对象
return new Promise((resolve, reject) => {
// 2. 启动异步任务
console.log('启动异步任务')
setTimeout(() => {
console.log('延迟任务开始执行...')
const time = Date.now() // 假设: 时间为奇数代表成功, 为偶数代表失败
if (time %2=== 1) { // 成功了
// 3. 1. 如果成功了, 调用 resolve()并传入成功的 value
resolve('成功的数据 ' + time)
} else { // 失败了
// 3.2. 如果失败了, 调用 reject()并传入失败的 reason
reject('失败的数据 ' + time)
}
}, time)
})
}
const promise = doDelay(2000)
promise.then(
value => {
console.log('成功的 value: ', value)
},
reason => {
console.log('失败的 reason: ', reason)
},
)
</script>

3、使用 promise 封装 ajax 异步请求

<script>
/*
可复用的发 ajax 请求的函数: xhr + promise
*/
function promiseAjax(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if (xhr.readyState!==4) return
const {status, response} = xhr
// 请求成功, 调用 resolve(value)
if (status>=200 && status<300) {
resolve(JSON.parse(response))
} else { // 请求失败, 调用 reject(reason)
reject(new Error('请求失败: status: ' + status))
}
}
xhr.open("GET", url)
xhr.send()
})
}
promiseAjax('https://api.apiopen.top2/getJoke?page=1&count=2&type=vid
eo')
.then(
data => {
console.log('显示成功数据', data)
},
error => {
alert(error.message)
}
)
</script>

1.5 promise 优势

一、指定回调函数的方式更加灵活

1. 旧的: 必须在启动异步任务前指定
2. promise: 启动异步任务 => 返回promise对象 => 给promise对象绑定回调函
数(甚至可以在异步任务结束后指定/多个)

二、支持链式调用, 可以解决回调地狱问题(回调函

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Camunda 7.11是Camunda平台的一个版本。Camunda平台是一个用于开发、执行和管理工作流和业务流程的开源平台。它提供了一个强大的流程引擎,可以帮助用户设计、自动化和监控各种业务流程。 关于示例中是否包含与"发票"相关的示例,我无法直接引用提供具体的信息。但是,您可以在Camunda平台的示例中寻找与发票相关的内容。根据引用所述,Camunda平台示例是旨在帮助用户快速入门的主要用法示例。您可以查看Camunda平台示例的源代码,以了解如何在Camunda中处理发票相关的业务流程。 此外,根据引用所述,对于特定的业务需求,您可能需要在Camunda平台的基础上进行二次开发。这意味着您可以自定义和扩展Camunda平台,以满足您的具体需求,并在此基础上开发处理发票的工作流程。 最后,引用提到了云程BPM采用了Camunda流程引擎进行扩展开发,并在多个项目上进行了验证。这可能是一个有关Camunda扩展和实际应用的有用资源,可以帮助您更深入地了解Camunda的功能和应用。 综上所述,Camunda 7.11是Camunda平台的一个版本,您可以通过查看Camunda平台示例和相关资源来了解如何在Camunda中处理发票相关的业务流程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [camunda-bpm-examples:旨在帮助您快速入门的camunda BPM用法示例集合](https://download.csdn.net/download/weixin_42106765/18210610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [三、Camunda工作流的表和用途说明(实践是检验真理的唯一标准)](https://blog.csdn.net/qq_32317661/article/details/115134892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [camunda数据库表结构介绍](https://blog.csdn.net/wxz258/article/details/109048818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值