async await promise 用法例子
async function a(){
console.log('-函数a开始执行-')
await b()
console.log('-函数a结束-')
}
function b(){
return new Promise((resolve,reject)=>{
console.log('-请等待2秒')
setTimeout(()=>{
console.log('等待结束')
resolve()
},2000)
})
}
// 此处运行函数
a()
用法剖析
1. async与await是搭配使用的
2. await后面的函数必须返回一个promise函数
3. 这个promise函数有2个参数(resolve,reject)你想返回成功,就用resolve(),你想返回失败,就用reject()
1.最简单的例子demo1
*若不调用resolve和reject,则程序一直在等待中,不会往下跑。
async function A(){
await B()
console.log('程序结束')
}
function B(){
return new Promise((resolve,reject)=>{
console.log('b运行完了')
})
}
A()
2.最简单的例子demo2
*调用resolve,程序会往下跑
async function A(){
await B()
console.log('程序结束')
}
function B(){
return new Promise((resolve,reject)=>{
console.log('b运行完了')
resolve()
})
}
A()
3.最简单的例子demo3
*调用reject,你会发现程序不会往下跑了,真的是这样吗?
async function A(){
await B()
console.log('程序结束')
}
function B(){
return new Promise((resolve,reject)=>{
console.log('b运行完了')
reject()
})
}
A()
4.最简单的例子demo4
*调用reject,其实直接跑到报错的地方了。
async function A(){
try{
await B()
console.log('程序结束')
}catch(err){
console.log('error:',err)
}
}
function B(){
return new Promise((resolve,reject)=>{
console.log('b运行完了')
reject('程序报错了,跑到了catch分支')
})
}
A()
5.最简单的例子demo5
*完整版1
let users=['tom','jerry']
async function Login(user){
try{
let result = await B(user)
console.log('结果:',result)
console.log('程序结束')
}catch(err){
console.log('error:',err)
}
}
function B(user){
return new Promise((resolve,reject)=>{
let rel = users.includes(user)
if(rel){
resolve('用户存在,登陆成功!')
}else{
resolve('用户不存在,登陆失败!')
}
})
}
// 模拟 tom登录
Login('tom')
*完整版2 --登录失败
let users=['tom','jerry']
async function Login(user){
try{
let result = await B(user)
console.log('结果:',result)
console.log('程序结束')
}catch(err){
console.log('error-catch:',err)
}
}
function B(user){
return new Promise((resolve,reject)=>{
let rel = users.includes(user)
if(rel){
resolve('用户存在,登陆成功!')
}else{
reject('用户不存在,登陆失败!')
}
})
}
// 模拟 tee登录
Login('tee')
以上代码可以直接复制到浏览器的console中运行
如有疑问,欢迎留评讨论!
更多用法,欢迎评论