promise 基础使用

2022-10-29 10:58:23

目录

须知

基础实例

基础应用

其他方法


须知

promise对象能够代表一个异步操作的成功或者失败。那是什么东西代表呢?就是它的状态!

以下就是三种状态:

  • 等待中(pending):初始状态,既没有被成功,也没有失败。
  • 成功(fulfilled):操作成功完成。
  • 失败(rejected):操作失败。

注意:状态是不可逆的改变,也只会改变一次,promise内部的操作是同步操作。

基础实例

下面我们开始创建一个最基础的实例看一下,首先进行一下参数说明:

resolve:会将该实例的状态改为fulfilled,且会将传入的值给实例;

reject:会将该实例的状态改为rejected,且会将传入的值给实例;

//创建简单实例

const promise = new Promise((resolve, reject) => { })

console.log(promise);

此时打开浏览器,结果如下:

PromiseState:代表该promise的状态,即pending;因为此时并没有改变实例的状态。

PromiseResult:代表此Promise的结果,为undefined;因为没有传入任何值给实例。

基础应用

现在就进行一个简单应用以及回调函数,回调函数的方式二选一即可:

//创建一个0-1之间的随机数num,当num>=0.5判断为成功否则判断为失败
const promise = new Promise((resolve, reject) => {
  const num = Math.random(0, 1)
  if (num >= 0.5) {
    resolve('ok')
  } else {
    reject('fail')
  }

})

//失败和成功的回调(连在一起写)
promise.then((onReslove) => {

  //状态为成功时,进入onReslove
  console.log(onReslove);
}, (onRejected) => {

  //状态为失败时,进入onRejected
  console.log(onRejected);
})

//失败和成功的回调(分开写)
promise.then((resolve) => {
  //状态为成功时,进入then
  console.log(resolve);

}).catch((reject) => {
  //状态为失败时,进入catch
  console.log(reject);
})


console.log(promise);

其他方法

此外还有几个单独的方法:

Promise.all([promise1,promise2,.....])

参数:包含n个promise对象的数组

结果:数组中每个promise对象的结果组成的数组

注意:只有当数组中所有promise对象都成功的时候,结果才为成功;

           只要有一个失败,结果就为失败,且值为第一个失败的promise对象的返回值;

Promise.race([promise1,promise2,.....])

参数:包含n个promise对象的数组

结果:第一个改变状态的promise的实例

Promise.reject( )

传入参数为  非promise对象 => 返回结果为失败的promise对象,值为传入的参数

传入参数为     promise对象 => 返回结果为失败的promise对象,值为传入的promise对象

就是传什么都是失败,结果为传入的东西

Promise.resolve( )

传入参数为 非promise对象 => 返回结果为成功的promise对象,值为传入的参数

传入参数为     promise对象 => 返回结果为参数的结果决定了resolve的结果

  • 作者:“玫瑰无原则 ”
  • 原文链接:https://blog.csdn.net/m0_60273757/article/details/125741322
    更新时间:2022-10-29 10:58:23