我正在尝试提取~25个请求来获取一些数据并将响应保存到单独的文件中。 我正在使用npm请求模块使用基本的Google云功能发出请求。每个请求可能需要0.5到5秒的时间才能返回响应。当脚本设置为少于10个请求时,一切都按预期工作并将所有内容保存到正确的文件中。然而,除此之外,我没有得到任何请求的回复。
for (i = 0; i < popIDS.length; i++) {
for (j = 0; j < genreIDs.length; j++) {
fetchAndSaveToFile(popIDS[i], genreIDs[j], date);
}
}
fetchAndSaveToFile
发出npm请求并使用pako将压缩响应保存到Google云端存储中的文件中。这最初是一个问题,提出~5个请求,但我增加了该功能的超时并且它开始工作,但是我将该功能的超时最大化为9分钟。所有功能目前都在一个文件中。
同样值得注意的是,popIDS [i],genreIDs [j]的值并未在回调中使用,并且&#39; i&#39;和&#39; j&#39;不需要被捕获。
我需要以不同方式生成异步请求吗?我看到有异步请求模块处理这种事情。我需要配置功能设置吗?或者我是否需要将其拆分为单独的文件,以便为每个请求设置9分钟超时?
答案 0 :(得分:0)
我能够通过更新使用Promise.all()
并使用new Promise
将请求调用映射到promise对象来解决问题。将Promise.all()
返回到主Google Cloud函数体,让函数知道在退出函数之前等待所有承诺完成。实施回调而不是承诺可能会导致Google云功能在所有回调完成之前提前退出。