Promise函数详解

Promise是JavaScript中的异步编程解决方案,解决回调地狱问题。它有pending、fulfilled和rejected三种状态,一旦确定就不会改变。.then和.catch用于处理异步操作的结果,.then的回调可以链式调用,catch用于捕获异常。Promise.all等待所有异步操作完成,而Promise.race则在第一个完成的异步操作后继续执行。
摘要由CSDN通过智能技术生成

Promise函数详解

Javascript执行环境是单线程的,也就是说JS环境中负责解释和执行的线程只有一个,一次只能完成一项任务,这个任务执行完后才能执行下一个,因此Javascript中存在大量的异步操作和回调函数。

Promise 是异步编程的一种解决方案,是为了解决地域回调问题,比传统的解决方案——回调函数和事件——更合理和更强大。

promise是一个构造函数,new 出来的 Promise 实例对象,代表一个异步操作,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。

Promise的状态

Promise对象的状态有3个,分别是pending(进行中)、fulfilled(已完成)、rejected(已失败)。Promise对象一旦进入了某一个状态,就不会再转成其他状态了(主要是后面两种状态,fulfilled和rejected)。如一旦调用了resolve函数,就是fulfilled的状态,就不会再调用reject函数了。

pending:等待状态,比如正在进行网络请求,或者定时器没有到时间。

fulfilled:已成功,当我们回调了resolve函数时,就处于该状态。

rejected:以失败,当我们回调了reject函数时,就处于该状态。

.then和.catch函数注意点:

.then()函数和.catch()都需要Promise对象才能调用,再使用这两个函数的时候,需要注意的地方如下:

1、调用 .then() 方法时,成功的回调函数是必选的,失败的回调函数是可选的。即参数可以为.then(resolve=>{},reject=>{})或.then(resolve=>{}) 这两种。

2、resolve函数返回的是Promise对象,哪怕使用 return ‘bbb’;这样的显式返回,最后也会转成Promise对象返回出去。也可以人工显式指定返回,如以下所示。新返回的Promise对象可以再跟then函数,一直跟下去。如果没有return这条语句,则默认返回对象的参数是undefinded,即res为undefined。

p.then(res => {
   
    console.log('11-' + res);
    return 'AAA'; // 相当于Promise.resolve("AAA")
}).then(res => {
   
    console.log('22-' + res);
    return new Promise((resolve, reject) => {
   
        resolve(res); // 此处还可以调用reject
    })
}).then(res => {
   
    return Promise.resolve(res);
})

3、reject返回的是空,或者说无返回。因为无返回,故后面跟then或catch函数无意义,也不会执行。

let newPromise = new Promise((resolve, reject) => {
   
    setTimeout(() => {
   
        reject('BBB');
    },
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值