我正在尝试考虑这个用例的最佳实践:
我有一个内部状态:results [],用于在渲染中显示数据。
然后,我需要并行调用3个API,然后在最终渲染之前将它们合并并排序到结果[]中。
我正在使用axios调用API,但我不想使用axios.all,因为我需要显示结果[],因为3个apis中的每个都返回,这样,它看起来更快。 / p>
我遇到问题,因为每次使用this.setState()更新结果[]时,后一个操作总会看到旧的结果[]; this.setState()不会立即应用..
最好的方法是什么?
答案 0 :(得分:1)
由于Javascript在单个线程上运行,因此永远不会出现竞争条件。保证一次只能运行一个异步回调,因为单个线程不能同时执行。下一个异步回调将安排在稍后运行。在一个函数调用中,您可以放心,您是唯一处理某些数据的人。
数据可能会在不同时间进入,但如果您只是在每次收到新数据时对数据进行合并和排序,那么这将是原子数据。