有下面几种基本的使用方式。
<br/>
**1. 基本使用过程**
```js
/**
* 1. 创建Promise对象
*/
const fun01 = (count) => {
/**
* resolve:成功时的回调函数
* reject:失败时的回调函数
*/
return new Promise((resolve, reject) => {
if (count === 1) {
resolve('成功时的回调')
} else {
reject('失败时的回调')
}
})
}
/**
* 2. 可以调用函数 then(value, reason) 获取Promise对象的返回值
* value:成功时的返回值
* reason:失败时的返回值
*/
fun01(1).then(
(value) => {
console.info('sucess', value) //sucess 成功时的回调
},
(reason) => {
console.info('fail', reason)
}
)
fun01(2).then(
(value) => {
console.info('success', value)
},
(reason) => {
console.info('fail', reason) //fail 失败时的回调
}
)
/**
* 捕获异常。
* 可以将函数 then(value, reason) 写成 then(value).catch(reason) 来捕获异常
*/
fun01(3).then((value) => {
console.info('success', value)
})
.catch((reason) => {
console.error('fail', reason) //fail 失败时的回调
})
```
<br/>
**2. 封装基于定时器的异步编程**
```java
const fun01 = (count) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (count === 1) {
resolve('成功时的回调')
} else {
reject('失败时的回调')
}
}, 2000)
})
}
fun01(1)
.then((value) => {
console.info('success', value)
//等待2000ms后输出:success 成功时的回调
})
.catch((reason) => {
console.error('fail', reason)
})
```
<br/>
**3. 封装异步请求**
```java
const fun02 = (url) => {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if (xhr.readyState != 4) return
const { status, response } = xhr
if (status === 200) {
resolve(JSON.parse(response))
} else {
reject(new Error(`message:请求失败, status:${status}`))
}
}
xhr.open('GET', url)
xhr.send()
})
}
fun02('http://localhost:3000/src/assets/demo.json')
.then((value) => {
console.info('sucess', value) //sucess {username: '张三', passowrd: '123456'}
})
.catch((reason) => {
console.info(reason)
})
```
- nodejs
- 同时安装多个node版本
- Vue3
- 创建Vue3项目
- 使用 vue-cli 创建
- 使用 vite 创建
- 常用的Composition API
- setup
- ref
- reactive
- 响应数据原理
- setup细节
- reactive与ref细节
- 计算属性与监视
- 生命周期函数
- toRefs
- 其它的Composition API
- shallowReactive与shallowRef
- readonly与shallowReadonly
- toRaw与markRaw
- toRef
- customRef
- provide与inject
- 响应式数据的判断
- 组件
- Fragment片断
- Teleport瞬移
- Suspense
- ES6
- Promise对象
- Promise作用
- 状态与过程
- 基本使用
- 常用API
- async与await
- Axios