promise使用
Posted 0314dxj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise使用相关的知识,希望对你有一定的参考价值。
1.什么是promise?
1.主要用于异步计算。
2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。
3.可以再对象之间传递和操作promise,处理队列。
2.promise的作用
为了避免页面冻结,不执行操作,可以异步操作,一时间可以执行多个事件!
- 回调地狱,代码难以维护, 常常第一个的函数的输出是第二个函数的输入这种现象
- promise可以支持多个并发的请求,获取并发请求中的数据
- 这个promise可以解决异步的问题,本身不能说promise是异步的
3.Promise的创建。
- 初始状态( pending )。
- 已完成( fulfilled ): Promise 的异步操作已结束成功。
- 已拒绝( rejected ): Promise 的异步操作未成功结束。
resolve 方法可以使 Promise 对象的状态改变成成功,同时传递一个参数用于后续成功后的操作。
reject 方法则是将 Promise 对象的状态改变为失败,同时将错误的信息传递到后续错误处理的操作。
// Promise实例的创建 let p = new Promise((resolve, reject) => { // TODO })
但是这里有个缺陷,一旦被创建就会立即被执行,所以用药函数包裹起来。
let getPromise = () => { return new Promise((resolve, reject) => { // TODO // 处理结果 if (result) { resolve(successObject) } else { reject(error) } }) }
常用方法:
常用的方法就是then()和catch()这两个方法,通过then()的传递可以解决回调的问题。
then可以接受两个参数,都是回调函数,第一个回调函数用来处理resolved
状态,参数为Promise实例调用resolve
传递的成功对象。第二回调函数用来处理rejected
状态,参数为调用Promise实例调用reject
传递的错误对象。
let getPromise = () => { return new Promise((resolve, reject) => { // 处理结果 if (result) { resolve(successObject) } else { reject(error) } }) } getPromise().then(res => { // 调用方法 console.log(res) }) .catch(err => { //错误执行时 })
也可以用then()继续返回一个promise对象,通过return一个新的promise,继续执行函数。
getPromise().then(res => { //第一层Promise console.log(res) return getPromise() ) .then(res => { // 第二层Promise console.log(res) }) .catch(err => { // 错误执行 })
使用 catch 的写法比一般的写法更加清晰明确。我们在捕获错误的时候,直接在最后写catch函数即可。
以上是关于promise使用的主要内容,如果未能解决你的问题,请参考以下文章