js//promise和async/await区别

参考:promise和async/await区别

区别

1 promise是ES6,async/await是ES7
2 async/await相对于promise来讲,写法更加优雅
3 reject状态:
promise错误可以通过catch来捕捉,建议尾部捕获错误,
async/await既可以用.then又可以用try-catch捕捉

一、async await

async用于申明一个function是异步的,而await可以认为是async wait的简写,等待一个异步方法执行完成。
规则:
1 async和await是配对使用的,await存在于async的内部。否则会报错
2 await表示在这里等待一个promise返回,再接下来执行
3 await后面跟着的应该是一个promise对象,(也可以不是,如果不是接下来也没什么意义了…)

async function demo() {
	let result01 = await sleep(100);
	//上一个await执行之后才会执行下一句
	let result02 = await sleep(result01 + 100);
	let result03 = await sleep(result02 + 100);
	// console.log(result03);
	return result03;
}

demo().then(result => {
    console.log(result);
});
let p = new Promise((resolve,reject) => {
    setTimeout(() => {
        reject('error');
    },1000);
});

async function demo(params) {
    try {
        let result = await p;
    }catch(e) {
        console.log(e);
    }
}

demo();

二、promise

let p = new Promise((resolve,reject) => {
  //...
     resolve('success')
 });
 
 p.then(result => {
     console.log(result);//success
 });
let p = new Promise((resolve,reject) => {
    reject('error');
});

p.catch(result => {
    console.log(result);
})

三、手写一个 promise

const p = new Promise((resolve,reject)=>{
	setTimeout(resolve,3000)
})
p.then(()={console.log('resolve')}}).catch(()=>{console.log('reject')})

const p = new Promise((resolve,reject)=>{
	setTimeout(resolve,3000)
})
p.then(()={console.log('resolve')}},()=>{console.log('reject')})
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值