Es6 Promise基础

什么是promise :

promise 是es6引入的新的异步解决方案,单纯从语法来说它就是一个构造函数,可以封装异步的任务,并且可以获取其成功失败的结果值,对结果进行处理,最大的好处:解决回调地狱的问题,并且在错误处理方面更加灵活,应用十分广泛。

什么是异步操作\异步编程:

例如:

node.js 中的 fs文件读取操作

ajax 网络请求

定时器

旧的解决方案:单纯的回调函数

例如:fs 中的文件操作:

require('fs').readFile('./index.html', (err,data)=>{})

ajax

 $.get('/server', (data)=>{})

为什么使用Promise

1 因为promise 支持链式调用 ,可以解决回调地狱问题

2 指定回调函数的方式更加灵活,旧的解决方案需要将异步任务准备好,而现在 启动异步任务 返回promise对象,给promise对象绑定回调函数,可以绑定多个。

什么是回调地狱,

简单来说就是 一个异步任务套着另一个异步任务,套了很多层,例如:

asyncFun1(test1,()=>{
    asyncFun2(test2,()=>{
        asyncFun3(test3,()=>{
            asyncFun4(test4,()=>{
                asyncFun5(test5,()=>{
    
                })
            })
        })
    })
})

Promise对象包括什么

控制台打印显示:

 

// Promise 的状态 PromiseState
pending  未决定的
resolved / fullfilled  成功
rejected  失败

// Promise 对象的值 PromiseResult
保存着异步任务成功或失败的结果
resolve
reject 

Promise 小案例  

resolve 调用完之后 就把promise 对象状态设为成功,可以status 当做结果值 传递,promise就可以拿到或处理我们成功时的值

reject    调用完之后 就把promise 对象状态设为失败

const p = new Promise((resolve, reject) => {
    setTimeout(() => {
    let status = true;
      if(status){
           resolve(status); // 将 promise 对象的状态设置为成功
        }else{
           reject(status); // 将 promise 对象的状态设置为失败
        } 
    }, 1000);
  });

//调用 then 方法
// value 值
// reason 理由
p.then((value) => {
     alert('成功' + value);
}, (reason) => {
     alert('失败 ' + reason);
});

上面的案例  我们知道 promise  可以包裹(封装) 一个异步操作,成功则掉用 resolve

失败则调用 :reject  包装好之后  我们需要调用promise 中的then方法

两个常用的对象方法

then 方法 这个方法执行时需要接收两个参数,这两个参数都是函数,

第一个函数 是对象成功时的回调

第二个函数 是对象失败时的回调

p.then((value) => {alert('成功' + value);}, (reason) => {lert('失败 ' + reason);});

catch 方法  这个方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数。 

例如   :

get('/ajaxs').then(function(args) {
  // ...
}).catch(function(error) {
  // 处理 getJSON 和 前一个回调函数运行时发生的错误
  console.log('发生错误!', error);
});



或者


const p= new Promise(function(resolve, reject) {
  throw new Error('error');
});
p.catch(function(error) {
  console.log(error);
});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值