ES6中 Promise的?使用场景?

简介: ES6中 Promise的?使用场景?

promise

Promise,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大。

我们如果处理多层异步操作,容易形成回调地狱问题。

promise解决异步操作的优点

优点

链式操作减低了编码难度
代码可读性明显增强

特点

对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态
一旦状态改变(从pending变为fulfilled和从pending变为rejected),就不会再变,
任何时候都可以得到这个结果。

promise对象仅有三种状态

pending(进行中)
fulfilled(已成功)
rejected(已失败)

用法

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”

reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”

实例方法

  1. then()
then是实例状态发生改变时的回调函数,第一个参数是resolved状态的回调函数,
第二个参数是rejected状态的回调函数。
then方法返回的是一个新的Promise实例
  1. catch()
catch()方法是.then(null, rejection)或.then(undefined, rejection)的别名,
用于指定发生错误时的回调函数。
  1. finally()
finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。

构造函数方法

  1. all()
Promise.all()方法用于将多个 Promise实例,包装成一个新的 Promise实例
  1. race()
  2. allSettled()
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例
  1. resolve()
参数是一个 Promise 实例,promise.resolve将不做任何修改、原封不动地返回这个实例
参数是一个thenable对象,promise.resolve会将这个对象转为 Promise对象,
然后就立即执行thenable对象的then()方法
参数不是具有then()方法的对象,或根本就不是对象,
Promise.resolve()会返回一个新的 Promise对象,状态为resolved
没有参数时,直接返回一个resolved状态的 Promise 对象
  1. reject()
Promise.reject(reason)方法也会返回一个新的 Promise 实例,该实例的状态为rejected
  1. try()

使用场景

将图片的加载写成一个Promise,一旦加载完成,Promise的状态就发生变化

通过all()实现多个请求合并在一起,汇总所有请求结果,只需设置一个loading即可

通过race可以设置图片请求超时


相关文章
|
1月前
|
前端开发
理解 ES6 中的 Promise
【10月更文挑战第24天】ES6 中的 Promise 是一种用于处理异步操作的机制,它提供了一种更优雅、更可控的方式来处理异步任务的结果。Promise 可以看作是对异步操作结果的一种承诺,它可以处于三种不同的状态:Pending(等待中)、Fulfilled(已完成,即成功)和 Rejected(已拒绝,即失败)。
|
2月前
|
前端开发 JavaScript 小程序
JavaScript的ES6中Promise的使用以及个人理解
JavaScript的ES6中Promise的使用以及个人理解
27 1
|
2月前
|
前端开发 Java
说说你对es6中promise的理解?
说说你对es6中promise的理解?
18 1
|
2月前
|
前端开发 Java
说说你对es6中promise的理解?
说说你对es6中promise的理解?
|
3月前
|
前端开发 JavaScript
ES6新标准下JS异步编程Promise解读
ES6新标准下JS异步编程Promise解读
42 3
|
4月前
|
前端开发
手写实现ES6的Promise.all()和Promise.race()函数
这篇文章介绍了如何手写实现ES6的`Promise.all()`和`Promise.race()`函数,提供了实现这两个Promise聚合函数的详细代码示例,并展示了如何使用它们。
手写实现ES6的Promise.all()和Promise.race()函数
|
2月前
|
存储 前端开发 JavaScript
关于 ES6 中 Promise 的面试题
关于 ES6 中 Promise 的面试题
20 0
|
5月前
|
前端开发 JavaScript
ES6 中 Promise对象使用学习
ES6 中 Promise对象使用学习
50 1
|
4月前
|
前端开发 JavaScript
ES6新特性(五):Promise优雅地处理异步
ES6新特性(五):Promise优雅地处理异步
|
6月前
|
JSON 前端开发 JavaScript
ES6引入Promise和async/await解决异步问题
【6月更文挑战第12天】ES6引入Promise和async/await解决异步问题。Promise处理异步操作,有pending、fulfilled、rejected三种状态,支持链式调用和并行处理。async/await是基于Promise的语法糖,使异步代码更同步化,提高可读性。两者都是处理回调地狱的有效工具,开发者应根据需求选择合适的方式。
57 3