手把手教你入门vue+springboot开发(十九)--消除异步传染性


前言

在异步编程中,异步传染性是个比较复杂的问题,"异步传染性"通常是指,当一个函数使用了async/await时,其调用者也必须使用async/await处理异步操作,这种情况可能导致代码变得复杂,不易维护。本篇重点研究一下如何消除异步传染性,可能解决这个问题本身对业务代码开发意义并不大,但是对框架设计却很重要,所以这些设计方法很值得我们学习借鉴,特别是大厂面试也可能涉及到。


一、异步传染性

首先我们简单理解一下异步传染性这个东西,为什么当一个函数使用了async/await时,其调用者也必须使用async/await呢?如果调用者不使用async/await会怎么样?还是以demo为例,我们把下面这段代码放到script中运行看看。
示例代码:

const fn1 = async () => {
   
   
  const res = await getAuthCode().then( response=>console.log(response))
  console.log("fn1");
}

const fn2 = async () => {
   
   
  await fn1()
  console.log("fn2");
}

const fn3 = async () => {
   
   
  await fn2()
  console.log("fn3");
}

const fn4 = async () => {
   
   
  await fn3()
  console.log("fn4");
}

fn4()

运行结果见下图:
在这里插入图片描述
很明显符合预期,但是如果其中有一个方法不使用async/aw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值