Promise详解1

定义

大家应该都知道promise是js中执行异步操作的一种方式,英文叫做承诺,那么为什么叫做承诺呢,因为每个promise都承诺会有一个then去处理状态改变后的操作,即一个 promise 必须有一个 then 方法用于处理状态改变

状态说明

Promise包含pending、fulfilled、rejected三种状态:

  • pending:初始等待状态,即新建完promise之后的状态
  • resolve:指已经解决,将 promise 状态设置为fulfilled
  • rejected:指拒绝处理该请求,将promise状态设置为rejected
  • 状态一旦改变将不可更改

promise 没有使用 resolve 或 reject 更改状态时,状态为 pending

console.log(
new Promise((resolve,reject) => {})
)//Promise {<pending>}

当状态改变后:

console.log(
new Promise((resolve,reject) => {
    resolve("fulfilled");
  })
)  //Promise {<resolved>: "fulfilled"}
console.log(
new Promise((resolve,reject) => {
    reject("reject");
   })
)  //promise{<rejected>: "rejected"}

promise执行

promise 创建时即立即执行即同步任务,then 会放在异步微任务中执行,需要等同步任务执行后才执行。
(js执行顺序:先执行主线程上的同步任务,再执行任务队列中的微任务,最后再去执行宏任务)

let promise = new Promise((resolve,reject) => {
            resolve("fullfilled")
            console.log("同步任务1")
        });
        promise.then( msg => {
            console.log(msg);
        })
        console.log("同步任务2")//同步任务1,同步任务2,fullfilled
  • promise 的 then、catch、finally的方法都是异步任务

  • 程序需要将主任务执行完成才会执行异步队列任务

 const promise = new Promise(resolve => resolve("success"));
       promise.then(alert);
       alert("同步任务")
       promise.then( () => {
           alert("leojiang")
       })//同步任务,success,leojiang

这里先加载alert中的同步任务,(这是主线程的主任务),然后再按顺序去执行两个then的微任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值