async await | 异步回调处理代码阻塞问题

本文探讨如何使用 async 和 await 来处理代码阻塞问题。通过将耗时操作变为异步,避免了回调地狱,使得代码更加清晰。示例展示了如何通过 async 函数创建 Promise,以及 await 关键字如何等待 Promise 完成并继续执行后续代码。
摘要由CSDN通过智能技术生成

 在程序中,有的函数执行所消耗的时间会比较长,这时会造成代码阻塞,导致下面的代码无法及时执行。

这时就需要异步回调来解决

把耗时的函数放到“后台”执行,等到它执行完毕,以回调函数的方式返回处理后的结果。

下面举个例子:

// 构造一个延迟resolve的promise对象
let delayGet = value =>
  new Promise(resolve => setTimeout(() => resolve('resolve: ' + value), 1000))

// async把函数包装为Promise
// async内部await用于阻塞Promise
async function main() {
  console.time('main')

  console.log('pass0')

  // 获得promise
  let res1 = delayGet(1)
  let res2 = delayGet(2)

  console.log('pass1')

  // 等待promise.resolve
  console.log(await res1)
  console.log(await res2)

  console.log('pass2')

  console.log(await delayGet(1))
  console.log(await delayGet(2))

  console.log('pass3')

  console.timeEnd('main')

  return 200
}


console.log('start')
// 异步回调
main().then(res => console.log(res))

console.log(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值