用async修饰的函数是异步函数吗?

前言:

在我们解决异步编程的时候,经常会用到async 和await编程的解决方案。

看以下的代码:

  async function fn() {
    console.log(123);
  }
  console.log(fn());

打印的是一个Promise对象。

  async function fn() {
    console.log(123);
  }
  fn()
  console.log(456);

如果修饰玩就是异步的,那么打印的结果就是456 ,123。

结果是相反的,它单纯的只是是一个Promise对象。并没有then,catch之类的。

这个时候用上await之后我们在看一下结果。

  async function fn() {
    const a1 = await 123
   console.log(a1)
  }
  fn()
  console.log(456);

view:

此时证明了一个问题,这个函数变成异步的了。

我们平常在调用接口的时候,总是   const res1=  await  异步1     const  res2= await 异步2

等待异步任务的完成返回一个结果。

通过上方的例子我们发现.不管await后面跟的是什么都是异步去执行的。

 

结论:

Promise对象并不都是异步去执行的。需要和await搭配起来去使用。

then是异步的,catch也是异步的......

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 是的,如果一个异步函数被用 `await` 修饰,它仍然具有异步的意义。 在 JavaScript 中,异步函数是指返回一个 Promise 的函数,它可以在不阻塞主线程的情况下执行异步操作。通常,我们会使用 `await` 关键字来等待异步函数的执行结果,但这并不会改变函数本身的异步性。 举个例子,假设有一个异步函数 `fetchData`,它返回一个 Promise,代表从网络中获取数据。我们可以这样使用它: ``` async function example() { const data = await fetchData(); console.log(data); } ``` 在这个例子中,我们使用 `await` 关键字等待 `fetchData` 函数的执行结果,但这并不会改变 `fetchData` 函数本身的异步性。它依然是一个异步函数,只是在执行的时候我们使用了 `await` 关键字来等待结果而已。 ### 回答2: 如果一个异步函数被用await修饰异步的意义依然存在。 异步函数通过使用关键字"async"来声明,它可以在执行任务过程中主动地释放CPU资源,并在等待异步操作完成后再继续执行。这种机制可以提高程序的性能和并发性,防止主线程被阻塞。 使用"await"关键字可以暂时挂起异步函数的执行,等待被调用的异步操作完成,并返回其结果,然后将程序流程切换回异步函数继续执行。"await"关键字的作用是等待异步任务完成,而不是阻塞线程的执行。 虽然异步函数被使用"await"修饰后会暂停其执行,但它依然具有异步的特性。它可以与其他异步操作并发执行,充分利用CPU资源,提高程序的效率。同时,异步函数可以与其他异步函数或任务串联起来,形成异步任务链,完成更复杂的异步操作。 在特定场景下,如果一个异步函数不被使用"await"修饰,可能会导致它在调用时立即执行,并阻塞程序的执行,从而降低性能。而使用"await"可以让异步函数在合适的时机执行,并等待异步操作完成后再继续执行,充分发挥异步的优势。 因此,即使一个异步函数被用"await"修饰,它依然具有异步的意义,并能够在并发执行和提高程序性能方面发挥作用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值