async和await

asyncawait是JavaScript(包括TypeScript)中用于处理异步操作的关键字,它们提供了一种更直观、更易于理解的异步编程方式。以下是asyncawait的作用和用法的详细解释:

async的作用

  • 声明异步函数async关键字用于声明一个函数为异步函数。这意味着函数内部可能包含异步操作,如等待某个Promise的完成。
  • 返回Promise对象:异步函数总是返回一个Promise对象。无论函数内部是否有显式的return语句,都会返回一个Promise对象。如果没有返回语句,函数会隐式地返回一个已解析(resolved)的Promise,其值为undefined

await的用法

  • 等待Promise的完成:在async函数内部,await关键字用于等待一个Promise对象的完成,并返回其解析后的值。await后面可以跟任何表达式,但如果该表达式不是一个Promise,await会将其视为一个已解析的Promise,并立即返回表达式的值。
  • 阻塞当前函数的执行:当await后面跟的是一个Promise时,它会阻塞当前函数的执行,直到Promise完成(解析或拒绝)。但请注意,这并不意味着它会阻塞整个JavaScript线程;相反,JavaScript会继续执行其他任务,直到Promise完成并返回结果给await
  • 错误处理:如果Promise被拒绝(reject),await表达式会抛出一个错误。这个错误可以通过在async函数内部使用try...catch结构来捕获。

以下是例子:

function delay(time) {  
    return new Promise(resolve => setTimeout(resolve, time));  
}  
  
async function demo() {  
    console.log('Taking a break...');  
    await delay(2000); // 等待2秒  
    console.log('Two second later');  
}  
  
demo();

在这个示例中,demo函数是一个异步函数,它使用await关键字来等待delay函数返回的Promise的完成。delay函数返回一个Promise,该Promise在指定的延迟时间后解析。当await delay(2000)执行时,demo函数的执行会暂停,直到delay函数返回的Promise解析。然后,它会继续执行并打印出"Two second later"。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值