Promise用法总结

promise概念

Promise是ES6的新特性,是异步编程的一种解决方法

1.从语法上来说: Promise是一个构造函数
  从功能上来说: promise对象用来封装一个异步操作并可以获取其成功/失败的结果值

2.promise.prototytype.then():promise实例状态改变的回调函数,有两个参数:第一个是成功回调函数,第二个是失败回调函数。他会返回一个全新的promise,因此可以继续then链式调用。

3.promise.prototype.catch():失败回调函数,状态变为rejected执行。相当于promise. prototytype.then(null/undifined,rejection),如果promise内发生了错误,但却没有定义catch(),这时运行到这一行代码会报错,但是不会影响到promise后面代码的执行

一.前言

js种的异步操作有哪些

ajax请求
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function(){}
xhr.addEventListener('readystatechange',function(){})
浏览器事件
ele.onclick=function(){}
定时
setTime(function(){}
,1000)

二.Promise 的优缺点

优点:

1、将异步操作一同步操作的方式表达出来,避免层层嵌套的回调函数

2、提供统一的操作接口,方便对异步操作的控制

缺点:

1、promise一旦建立,则不可取消

2、如果不设回调函数,则会在promise内部抛出错误,不会反应到外部

3、当状态是pending是,无法判断当前状态(是异步刚刚开始执行还是即将完成了异步操作)

三.状态
1.pending 进行中,当异步操作执行中
2.resolve 操作成功状态
3.rejected 操作失败的状态
四对原生ajax封装

 const p = new Promise((resolve,reject) => {
                //1.创建对象
                const xhr = new XMLHttpRequest();
                //2.初始化
                xhr.open('GET','https://api.apiopen.top/api/sentences');
                //3.发送
                xhr.send();
                //4.处理响应结果
                xhr.onreadystatechange = function(){
                    if(xhr.readyState === 4){
                        //判断响应状态码 2xx
                        if(xhr.status >= 200 && xhr.status < 300){
                            //控制台输出响应体
                            // console.log(xhr.response); 
                            resolve(xhr.response);
                        }else{
                            //控制台输出响应状态码
                            // console.log(xhr.status);
                            reject(xhr.status);
                        }
                    }
                }
            });
            //调用then方法
            p.then(value => {
                console.log(value);
            }).catch(err=>{
                console.log(err)
                    
            })
                
  

五.Promise的基本API

1.实例方法

1.then() 得到异步任务的正确结果

2.catch() 获取异步信息

3.finally() 不管Promise最后的状态如何都会执行的操作

成功与否都会执行(不是正式标准)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值