promise

Promise

对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

如下:

new Promise(function(resolve,reject){ 
    //内容
})

先用简单的例子来了解一下promise的语法应用:

let x=6;
let promise=new Promise(function(resolve,reject){
    if(x==1){
    resolve("success")
    }else{
    reject("error")
    }
})

此时,则需要使用promise的 then 方法。

promise.then(res=>{
  console.log(res)
//结果为 Uncaught (in promise) error
//这里的 error 是打印出来的结果
},err=>{
  console.log(err)
//结果为error
})

promise.then 有两个参数:成功和失败

promise.then(success,error)
//所以第一次打印的结果会有 Uncaught (in promise) 
//err=>{}作用就是捕获错误信息

promise有专门捕获错误的方法 catch

promise.catch(err=>{})

上述两种可直接写成:

promise.then(res=>{
  console.log(res)
}).catch(err=>{
  console.log(err)
})

针对Promise 本身还有几个内容:

Promise.resolve()
//它是指 将resolve里的内容转成一个Promise对象,且为成功状态

用一个例子具体了解一下:

let p=Promise.resolve("javascript");
p.then(res=>{
  console.log(res)
})

//这里:let p=Promise.resolve("javascript") 等于:
  new  Promise(resolve=>{
    resolve("javascript")
  })
Promise.reject()
//它是指 将reject里的内容转成一个Promise对象,且为失败状态

同理:

let p=Promise.reject("javascript2");
p.then(res=>{
  console.log(res)
}).catch(err=>{
  console.log(err)
})

//这里:let p=Promise.reject("javascript2") 等于:
  new  Promise(reject=>{
    reject("javascript2")
  })

Promise 的批量操作: Promise.all([p1,p2,p3,p4…]),通俗来讲就是将很多Promise对象放在一个数组里面,进行打包,但是它仍然是一个Promise对象。

举例说明一下:

let p1=Promise.resolve("a");
let p2=Promise.resolve("b");
let p3=Promise.resolve("c");
//仍然可以用then和catch:
Promise.all([p1,p2,p3]).then(res=>{
  console.log(res)
})

此方法可用于数据请求,若p1,p2,p3是三种不同的信息,将其解构,然后直接获取数据。例:

Promise.all([p1,p2,p3]).then(res=>{
  let [res1,res2,res3]=res;//解构 
  console.log(res1,res2,res3)
})

但是,all里面的Promise对象都是resolve状态

Promise.race()与Promise.all()作用类似,不同的是,只要定义的Promise对象有一个resolve状态,就返回值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值