一、Promise
Promise
就是一个容器,里面保存未来才会结束的事件(异步操作)
语法:
Promise
对象是一个构造函数,new一个Promise实例
const promise=new Promise(function(resolve,reject){
....
if(/* 异步操作成功 */){
resolve(value);
}else{
reject(error);
}
})
.then(function(value){
//success
}),
resolve
:改变Promise的状态,将异步操作成功的结果作为参数传递出去
reject
:在异步操作失败时调用,将报出的错误作为传递参数
二、async
async
1、含义
async
函数就是将 Generator
函数的星号(*
)替换成async
,将yield
替换成await
2、基本用法
async
函数的返回值是 Promise
对象,可以使用then
添加回调函数。当函数执行遇到await
就会先返回,等到异步操作执行完毕,再接着执行函数体内后面的语句。
3、使用形式
//函数表达式
const foo=async function (){}
// 函数声明
async function foo(){}
//对象的方法
let obj={async foo(){}}
obj.foo().then(...)
//箭头函数
const foo = async ()=>{}
// class方法
class foo{
async getNum(){
}
}
4、返回Promise
对象
async
函数内部return
返回的值,会成为then
方法回调函数的参数
async
函数内部抛出错误,会导致返回的 Promise
对象变为reject
状态。抛出的错误对象会被catch
方法回调函数接收到
5、await
命令
await
命令后面是一个 Promise
对象,返回该对象的结果
任何一个await
语句后面的 Promise
对象变为reject
状态,那么整个async
函数都会中断执行
async function f() {
await Promise.reject('出错了');
await Promise.resolve('hello world'); // 不会执行
}