2025年ES6 Prmoise简单入门

ES6 Prmoise简单入门关于 Promise 1 promise 的作用 作用 解决异步回调问题 传统方式 大部分用回调函数 事件 2 promise 对象有三种状态 pending 初始状态 Resolved 成功状态 Rejected 失败状态 如下图所示

大家好,我是讯享网,很高兴认识大家。

关于Promise

1.promise的作用
2.promise对象有三种状态:

    pending(初始状态)

    Resolved(成功状态)

    Rejected(失败状态)

    如下图所示,pending状态的Promise有2条分支可以选择,不能同时选择,只能2选1,

因为promise.prototype.then和promise.prototype.catch方法最后都返回promise对象,所以可以使用链式调用。


讯享网

    

3.创建promise对象

如下代码所示:

首先我们通过new 调用promise的构造器进行实例化,promise的构造函数接收一个参数,是函数,这个函数里面需要传入两个参数:resolve,reject。分别执行异步操作之后的成功的回调函数,失败之后的回调函数。

我们接着往下看4.promise的方法

 var p1=new Promise(function(resolve,reject){ setTimeout(() => { var num = Math.random()*100; if(num>50){ resolve(num) }else{ reject(num) } }, 2000); })

讯享网
4.promise的方法
promise.then(成功状态的方法,失败状态的方法),{注意:then里面的2个参数函数的位置是固定的}
讯享网 var p1=new Promise(function(resolve,reject){ resolve('成功了') }) p1.then((data)=>{console.log(data)},(res)=>{console.log(res)}); //后台输出 成功了
之前讲过promise的3种状态,上面的例子中 p1的状态为resolved成功状态,所以then之后,它就调用了then 里面的成功状态的方法。

then 方法也可以链式调用,如下:

 var p1=new Promise(function(resolve,reject){ resolve('成功了') }) p1.then((data)=>data+'+1',(res)=>res) //成功后返回 data+'+1' 然后作为下一个data 的参数传下去 .then((data)=>{console.log(data)},(res)=>{console.log(res)}) // 输出结果为 成功了+1
promise.resolve(...):可以接受thenable对象,将其转化为非thenable的值。将里面接受的值转化                                    为一个promise对象,且resolve状态为成功状态,我自己理解为:

                                           new Promise(resolve =>{resolve('成功')})

                                          (thenable对象:拥有then方法的对象均成为thenable对象)

promise.reject(...):同上,只不过状态变成了reject。这里不过多解释了。

promise.all([p1,p2,p3]):数组里面的p1,p2 ,p3为promise对象,然后放进数组,相当于一个大的promise对象,其中必须确保所有的promise对象都是resolve状态。然后会等p1,p2,p3所有都加载完后再一起输出。

promise.race([p1,p2,p3]): 跟上面相反,只要p1,p2,p3里最快的一个执行完毕后就会立即执行,不会等待其他的异步操作。
promise.catch(...) 在promise链上,遇到reject状态catch就会触发。

小讯
上一篇 2025-01-07 12:09
下一篇 2025-03-06 23:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/20105.html