Web API:S Fetch() 是并行还是异步?

问题描述 投票:0回答:1

我很难找到这个问题的答案。 当我们调用 fetch() 时,浏览器是打开一个新线程还是调用只是放入微队列中?

javascript multithreading async-await fetch-api
1个回答
3
投票

答案有点“两者”:

  • 网络请求本身与 JavaScript 线程上发生的任何其他事情并行处理,而不是 JavaScript 线程上。 (在所有主要浏览器中。)

  • 当网络请求完成时,承诺反应(履行或拒绝)会排队等待 JavaScript 线程在下次检查相关队列时拾取。 (我认为发生的情况是,浏览器将一个解决承诺的任务排队,而该任务又将微任务队列中的任何相关承诺反应排队。不过,细节并不重要;从根本上来说,一旦网络请求完成,任务/微任务在某个地方排队等待需要发生的任何承诺反应,并像其他任务/微任务一样由 JavaScript 线程拾取。)

© www.soinside.com 2019 - 2024. All rights reserved.