在 Firebase Cloud函数中,我试图连续执行多个XMLHttpRequest()
,然后再处理数据。
我的代码,例如连续执行4个XMLHttpRequest()
,并且运行的XMLHttpRequest()
的数量是随机的。有时,所有4个XMLHttpRequest()
都在运行,并且该函数的执行大约需要2s。
函数执行耗时2338毫秒,状态为:“确定”
有时,只有1、2或3个XMLHttpRequest()
正在运行,直到我超时。
函数执行耗时60002毫秒,状态为:“超时”
有人知道我在做什么错吗?非常感谢!
-
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);
});
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);
});
}
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);
}