前言
在异步编程中,异步传染性是个比较复杂的问题,"异步传染性"通常是指,当一个函数使用了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

--消除异步传染性&spm=1001.2101.3001.5002&articleId=142280994&d=1&t=3&u=be9132299f1844898f9a7f4e0d0dee00)
1648

被折叠的 条评论
为什么被折叠?



