答:
const fetchDataASync = async () => {}
乙:
const fetchDataSync = () => { fetchDataAsync() }
我刚刚开始学习 React 中的 useEffect,我注意到如果你将 A 直接放入其回调函数中,你会收到警告:“Effect 回调是同步的,以防止竞争条件。”
但是,如果你把 B 放在那里,它会在没有任何警告的情况下运行,这让我想知道:
直接调用异步函数和调用调用该异步函数的同步函数有什么区别?
主要区别(在您给出的示例中)是您没有返回异步操作完成后将完成的 Promise。
为什么一个可以引起竞争条件而另一个却不能?
您误诊了症状。通过将回调更改为不返回 Promise,您已将问题隐藏在间接层下。您不再收到该特定警告,但危险仍然存在。