最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

当运行异步代码时,Promise执行程序回调在哪里?

网站源码admin17浏览0评论

当运行异步代码时,Promise执行程序回调在哪里?

当运行异步代码时,Promise执行程序回调在哪里?

Promise构造函数可以取executor callback function,这个问题是当执行者回调函数具有异步代码时,该回调函数在执行空间中的位置。

详细信息:

Promise对象表示一个可能尚不可用的值,但将来会在某个时候解析。它允许您编写异步代码,例如调用远程Web服务,您将创建Promise对象,该对象表示将来Web服务将返回的数据。

直到实际数据可用,Promise对象的作用就像是实际数据的代理。

下面的代码段描述了这种情况:

function getRandomJoke(){
  return new Promise((resolve, reject) => {
    const request = new XMLHttpRequest();

    request.open('GET', '');
    request.onload = () => {
      if (request.status === 200) {
        resolve(request.response); // we got data here, so resolve the Promise
      } else {
        reject(Error(request.statusText)); // status is not 200 OK, so reject
      }
    };

    request.onerror = () => {
      reject(Error('Error fetching data.')); // error occurred, reject the  Promise
    };

    request.send(); // send the request
  });
}

根据此thread中的讨论,Promise创建和执行程序回调函数的执行都发生在主线程上,只有解决回调将在事件循环的下一个计时周期执行。

如果是这种情况,上面的代码片段的执行程序函数具有进行API调用的异步代码-也会挂在主线程上,直到API返回数据。

回答如下:

如果是这种情况,上面的代码片段的执行程序函数具有进行API调用的异步代码-也会挂在主线程上,直到API返回数据。

发布评论

评论列表(0)

  1. 暂无评论