函数修饰符 async await

asyncES7 中用于修饰函数,被修饰的函数返回一个Promise对象。

async function test() {
    return 123;
}
const pro = test();
console.log(pro);

// Promise {<resolved>: 123}

可以说async的出现是为了简化Promise的书写

function test() {
    return new Promise((resolve, reject) => {
        resolve(123)
    })
}
const pro = test();
console.log(pro);

// Promise {<resolved>: 123}

await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。

async function test1() {
    return 123;
}

async function test2() {
    const result = await test1();
    console.log(result)
}

test2()

// 123

await 也可以用来简化 then 函数

function test1() {
    return new Promise((resolve, reject) => {
        resolve(123)
    })
}

function test2() {
    return new Promise((resolve, reject) => {
        test1().then(result => {
            console.log(result);
            resolve()
        })
    })
}
test2()

// 123

*如果await后面不是一个promise对象,则会对包装一个promise继续按照规则执行

async function test() {
    const result = await 1;
    console.log(result);
}
// 等同于 ↓↓↓
function test() {
    return new Promise((resolve, reject) => {
        Promise.resolve(1).then(data => {
            const result = data;
            console.log(result);
            resolve()
        })
    })
}

如果async中有错误的时候,可以使用try...catch...去捕获async中的错误

async function getPromise() {
    if (Math.random() < 0.5) {
        return 1;
    } else {
        throw 2;
    }
}

async function test() {
    try {
    	const result = await getPromise();
    	console.log("正常",result)
    } catch(err) {
    	console.log("错误",err);
    }
	// 等同于 ↓↓↓
    getPromise().then(data => {
        const result = data;
        console.log("正常", result)
    }, err => {
        console.log("错误", err);
    })
}
test()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值