我遇到的问题是我要发出许多API请求,由于要返回的数据大小,所有这些请求都需要几秒钟的时间才能返回,而UrlFetchApp.fetchAll(..)
只是在返回空JS对象的数组,例如:[{},{},...]
。
我的请求数组看起来像这样(为清楚起见而格式化):
requests = [
{
validateHttpsCertificates: false,url: 'https://url.com/api/v2/api_key/endpoint/action?params1=false¶ms2=true'
},{
validateHttpsCertificates: false,url: 'https://url.com/api/v2/api_key/endpoint/action?params3=false¶ms4=true'
}
];
发出请求的代码:
responses = UrlFetchApp.fetchAll(requests);
// returns back '[{},{}]'
console.log(JSON.stringify(responses));
我可以通过数据库确认正在运行API调用,因为AWS RDS性能指标显示数据库查询正在运行,而且我还可以确认API本身通过NewRelic响应为200。这就是我的直觉我没有正确使用GAS / UrlFetchApp.fetchAll()
。
所以,我想知道:
- GAS是否可以同步运行,也就是要等
.fetchAll()
返回后再运行console.log(...)
行? - 我实际上是在正确呼叫
fetchAll
吗?目前不知所措,而Google Appscript文档充其量是微不足道的。
预先感谢您的帮助。
编辑:
在我成功使用fetchAll
之后,我迁移到fetch
,例如:
// synchronously fetching one by one
requests.map(request => UrlFetchAll.fetch(request.url,{ validateHttpsCertificates: false });