async await promise的最简单用法-与剖析

6 篇文章 0 订阅

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中运行

如有疑问,欢迎留评讨论!
更多用法,欢迎评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值