以代码讲解
promise
const p = new Promise((resolve, reject) => {
//参数resolve, reject都是回调函数
//执行了resolve函数, then就执行第一个回调函数参数
//执行了reject函数, then就执行第二个回调函数参数
if(err)
reject(err) //err为操作失败返回数据
resolve(data) //data为操作成功返回数据
})
p.then(value => {
//value即上面data数据
console.log(value)
},result => {
//result即上面err数据
console.warn(result)
})
//另一种写法
//axios请求写法
new Promise((resolve, reject) => {
if(err)
reject(err)
resolve()
}).then(res => {
}, err => {
})
async和await
//封装的一个异步方法,返回一个promise对象
function Func(){
return new Promise((resolve, reject) => {
//异步操作代码, 如文件读写、网络请求
//操作失败情况:
if(err)
reject(err) //err为操作失败返回数据
resolve(data) //data为操作成功返回数据
})
}
//
async function main(){
//await的函数需要返回一个Promise对象
//若该Promise对象状态为fulfilled(操作成功)则p为Promise成功返回的数据
//若该Promise对象状态为rejectd(操作失败)则p为抛出异常,需要用try catch捕获
const p = await Func()
//p即为上面的data
console.log(p)
//测试此时是否为同步,若123在p后面,则说明同步
console.log(123)
}
main()