运行多个XMLHttpRequest()时,Firebase Cloud Function以状态“超时”结束

时间:2019-07-25 09:28:01

标签: firebase xmlhttprequest google-cloud-functions

Firebase Cloud函数中,我试图连续执行多个XMLHttpRequest(),然后再处理数据。

我的代码,例如连续执行4个XMLHttpRequest(),并且运行的XMLHttpRequest()的数量是随机的。有时,所有4个XMLHttpRequest()都在运行,并且该函数的执行大约需要2s。

  

函数执行耗时2338毫秒,状态为:“确定”

有时,只有1、2或3个XMLHttpRequest()正在运行,直到我超时。

  

函数执行耗时60002毫秒,状态为:“超时”

有人知道我在做什么错吗?非常感谢!

-

Firebase云功能

exports.scheduledFunctionMultipleXmlHtmlRequests = functions.pubsub
  .schedule('every 12 hours')
  .onRun(async () => {

    const data1 = await getXMLHttpRequestData(getQueryString());
    console.log('data1: ', data1);

    const data2 = await getXMLHttpRequestData(getQueryString());
    console.log('data2: ', data2);

    const data3 = await getXMLHttpRequestData(getQueryString());
    console.log('data3: ', data3);

    const data4 = await getXMLHttpRequestData(getQueryString());
    console.log('data4: ', data4);

  });

getXMLHttpRequestData()

function getXMLHttpRequestData(queryString: any) {
  return new Promise(function(resolve, reject) {

    const apiRequest = new XMLHttpRequest();

    const requestUrl = 'https://mediathekviewweb.de/api/query';

    apiRequest.open('POST', requestUrl);

    apiRequest.addEventListener('load', function() {

      let apiResponse;
      try {
        apiResponse = JSON.parse(apiRequest.responseText);
      } catch (e) {}

      if (apiRequest.status === 200 && typeof apiResponse !== 'undefined') {
        resolve(apiResponse.result.results);

      } else {
        reject(apiRequest.status);
      }
    });
    apiRequest.send(queryString);
  });

}

getQueryString()

function getQueryString() {

  let query = {

    queries: [
      {
        fields: ['title', 'topic'],
        query: 'sturm der liebe'
      },
      {
        fields: ['channel'],
        query: 'ndr'
      }
    ],
    sortBy: 'timestamp',
    sortOrder: 'desc',
    future: false,
    offset: 0,
    size: 10

  };

  return JSON.stringify(query);

}

0 个答案:

没有答案