什么是promise? 解决那些问题?

一、什么是promise? 解决那些问题?

  1、回调地狱   代码不好维护,错误处理非常麻烦,不能统一处理错误

  2、多个请求并发,基于回调。(之前写的并发读取文件,自己定义定时器)

二、 promise 是一个类,类用的时候,只需要new
  1、new Promise() 是需要传递一个执行器函数,exector 这个函数默认就会执行 【立即执行】

  2、每个promise() 都有三个状态  pending 等待态,fullfiled, 成功态,rejected 失败态

  3、默认创建一个promise 是等待态,默认提供给你两个函数,resolve让promise变成成功态,rejected让promise变成失败态。

  4、每个promise 的实例都具备一个then方法,then方法中传递两个参数, (1)成功的回调  (2)失败的回调

  5、如何让一个promise 变成失败态,reject()   可以抛出一个错误

  6、如果多次调用成功或者失败,只会执行第一次。 一旦状态变化,就不能再变成成功,或者失败。

  7、自己实现基本的promise。语法commonjs 规范 ,可以在一个模块中,导出一个变量,另一个模块来引用

let promise=new Promise((resolve,reject)=>{

    //promise中添加定时器
    setTimeout(()=>{   //异步的逻辑的时候,先把成功、失败存储起来,等会一起调用。
        //throw new Error('我失败了');
        resolve('success');   // 此时如果调用了resolve 就让刚才存储的成功的回调函数去执行。
        //reject('fail');
    },1000)
   
})

// 1、同一个promise实例,可以then多次
// 2、核心就是发布订阅模式
promise.then((success)=>{
    console.log('success',success);
},(err)=>{
    console.log(err,'fail');
});

promise.then((success)=>{   //如果调用then的时候,没有成功,也没有失败,可以先保存和失败的回调。
    console.log('success',success);
},(err)=>{
    console.log(err,'fail');
});


// then 是一个订阅 ,resolve或者reject是个发布

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vues

刚好遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值