2021/10/05 北京 promise,async和await

本文介绍了如何使用ES6的Promise和async/await来处理异步操作,避免回调地狱。Promise构造函数与then方法允许优雅地链式处理异步数据,而catch方法用于捕获错误。async函数配合await关键字可以更简洁地获取异步结果,使得代码更加同步化和易读。通过示例展示了getTea函数的Promise实现,并演示了如何在getData函数中使用await获取多个异步资源。
摘要由CSDN通过智能技术生成

ES5用回调函数拿异步数据,容易造成回调地狱。ES6用then拿回调数据

Promise.prototype.then 方法返回的是一个新的 Promise 对象

let p=new Promise()
p.then()//通过then拿到异步数据,因为resolve()可以将异步数据传递出来

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

Promise的状态改变只可能是两种可能:从 Pending 变为 fulfilled 和从 Pending 变为 Rejected。一旦状态发生改变,就不会再变,这也是Promise[承诺]这个名字的由来

Promise构造函数接收一个函数作为参数。该函数也有俩个参数resolve和reject,是有js提供的。并且resolve和reject也是函数。

//resolve可以将异步数据传递出来
let p=new Promise(function(resolve){
  resolve("hello world")
})
//因为then方法第一个参数是拿到成功的数据,第二个参数是拿到失败的数据
p.then(function(data){
  console.log(data);
})

promise.then((value)=>{
    console.log(value)//then方法第一个参数拿到成功的数据
},(error)=>{
    console.log(error)//then方法第二个参数拿到返回失败的数据
})

对上面得代码可以再升级使用catch

promise.then((value)=>{
    console.log(value)//then方法第一个参数拿到成功的数据
}).catch((error)=>{
    console.log(error)//catch方法拿到返回失败的数据
})
//结合上面代码,then方法返回值是Promise,所以catch也是Promise自己的方法

 改造喝奶茶函数,使返回一个promise对象

//获取奶茶的方法
function getTea(){
 return new Promise(function(resolve){
    setTimeout(()=>{
    resolve("奶茶")
    },1000)
})
}
getTea().then(
function(data){
    console.log(data)//这里可以换为箭头函数
}
)

 当然还有我们的async和await

async function A(){} //普通函数
let A=async ()=>{} //箭头函数

await后面接promise对象,不再用then获取resolve传出的数据了,await的返回值就是resolve传出的数据。用一个变量去接收

async function getData(){
//直接获取resolve传递出来的异步数据
    let hotPot=await getHotpot();
    console.log(hotPot);
    let tea=await getTea();
    console.log(tea);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值