javaScript中的异步任务何时开始



假设一个JavaScript任务进行异步调用。例如xhr.send(stuck)

  1. (async)是否立即在另一个线程中发送?或
  2. 在当前任务完成之前,发送不会开始?

我很确定它是(2)后者,但是这种行为是规格所涵盖的,还是仅仅是典型的实现。与此相类似...听众的创建是否被认为是同步电话?是否有涵盖此的规范?

这个问题主要由@alnitak,https://stackoverflow.com/a/17439761/345427回答www.w3.org/tr/html51/webappapis.html#event-loops

实现可能有所不同,但语义似乎在本摘要中概述了。

  1. 异步调用(通常)会导致执行立即在单独的线程中开始。[例如。xhr.send()]
  2. 事件听众创建同步发生。[例如。xhr.addeventlistener()]
  3. 当异步任务完成一个新任务时,代表异步结果将添加到任务标题
  4. 事件环读取任务标题并评估下一个任务
  5. 异步结果具有关联的回调,该回调检查了为结果注册的听众。

这是异步任务工作原理的一个示例。https://chromium.googlesource.com/chromium/blink.git//99b8c9800ac123eddc3e1990888888888d2294b22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222太体/

您可以从代码中看到,在多个位置将任务添加到任务队列中,dispatchevent()被调用。

相关内容

  • 没有找到相关文章

最新更新