Promise,async,await

tech2025-01-14  5

什么是Promise?

Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,promise是一个对象,从它可以获取异步操作的的最终状态(成功或失败)。Promise是一个构造函数,对外提供统一的 API,自己身上有all、reject、resolve等方法,原型上有then、catch等方法。

Promise的两个特点

Promise对象的状态不受外界影响

1)pending 初始状态

2)fulfilled 成功状态

3)rejected 失败状态

Promise 有以上三种状态,只有异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个状态

Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled或者由pending变成rejected

创建promise

const promise = new Promise((resolve, reject) => { // do something here ... if (success) { resolve(res); // 成功回调 } else { reject(err); // 失败回调 } }); function getData(){ let data = new Promise(function(resolve,reject){ //执行异步操作 }); return data; } function getMore(){ let data = new Promise(function(resolve,reject){ //执行异步操作 }); return data; } //...then.catch方法 getData.then(res=>{ console.log(res) }).catch(err=>{ console.log(err) }) //...all方法 Promise.all([getData(),getMore()]).then(function(res){ console.log(res) });

async,await

function getData(){ let data = new Promise(function(resolve,reject){ //执行异步操作 }); return data; } function getMore(){ let data = new Promise(function(resolve,reject){ //执行异步操作 }); return data; } async function get(){ //串行 let data=await getData()//先等待第一个函数返回 let more=await getMore()//再等待第二个函数返回 //并行 let dataMore=await Promise.all([getData(),getMore()]) }
最新回复(0)