就在现在,我与团队负责人进行了讨论,我对他的话有些怀疑,正在寻求专业人士的帮助。
例如,我们有三个异步功能
const fetchViewers = async () => {
const viewers = await fetch(...);
this.setState({ viewers });
};
const fetchPolls = async () => {
const polls = await fetch(...);
this.setState({ polls });
};
const fetchRegistrants = async () => {
const registrants = await fetch(...);
this.setState({ registrants })
};
我们正在按这样的顺序调用它们
const init = () => {
fetchViewers();
fetchPolls();
fetchRegistrants();
}
假设吸引观众所花的时间比另外两个人要多得多,
我的问题是,是否有任何理由将fetchViewers
放在最后?
由于我们不等待它们在init
函数中被解析,因此我很确定这没关系,因为它仅影响将其放入堆栈的顺序,并且将进行调用。由DOM。
如果有关系,请详细解释原因。
答案 0 :(得分:2)
异步功能仍然同步运行,直到第一个await
。因此,如果您在实际的异步操作之前进行了一些长时间运行的准备,则顺序确实很重要。另外,如果异步任务正在访问共享资源(例如,它们正在锁定同一数据库),则命令可能会影响任务可以并行运行的程度(尽管这不在JS的范围内) 。在给定的情况下,我看不到同步代码/共享资源(bandband除外,但这应该无关紧要),所以它不重要。要给出一个绝对的答案,请对电话进行混洗(6个组合,所以工作量不大)并对其进行度量。