Javascript DataStudioConnector:运行承诺?
我正在尝试设置自定义DataStudio连接器 在“getData”调用中,我需要在返回数据之前运行两个api调用。我被告知,使用javascript承诺是实现这一目标的最佳方式 如何使“GetData”方法仅在承诺完成后返回?这可能吗Javascript DataStudioConnector:运行承诺?,javascript,google-data-studio,Javascript,Google Data Studio,我正在尝试设置自定义DataStudio连接器 在“getData”调用中,我需要在返回数据之前运行两个api调用。我被告知,使用javascript承诺是实现这一目标的最佳方式 如何使“GetData”方法仅在承诺完成后返回?这可能吗 Here is the example of the promise function getData(request) { var apiRequest1 = fetch('www.domain.com/api1').then(funct
Here is the example of the promise
function getData(request) {
var apiRequest1 = fetch('www.domain.com/api1').then(function(response){
return response.json()
});
var apiRequest2 = fetch('www.domain.com/api2').then(function(response){
return response.json()
});
var combinedData = {"apiRequest1":{},"apiRequest2":{}};
Promise.all([apiRequest1,apiRequest2]).then(function(values){
combinedData["apiRequest1"] = values[0];
combinedData["apiRequest2"] = values[1];
console.log("combined2"+JSON.stringify(combinedData))
return combinedData;
}
requestedSchema.forEach(function(field) {
switch (field.name) {
case 'weburl':
var urltoTest = request.configParams.urlTotest;
values.push(urltoTest);
break;
case 'pageSpeed':
var pageSpeed = parsedResponse.ruleGroups.SPEED.score;
values.push(pageSpeed);
break;
default:
values.push('');
break;
}
});
看起来,让这项工作顺利进行的唯一方法是一个接一个地进行两次抓取
这并不理想,但希望谷歌能为DataStudioConnectors改进这一点。看起来,让这项功能正常工作的唯一方法是一个接一个地进行两次抓取
这并不理想,但希望Google能够改进DataStudioConnectors的这一点,“在返回数据之前运行两个api调用”——这是不可能的,您不能立即返回异步调用的结果。“有人告诉我,使用javascript承诺是实现这一点的最佳方式。”-承诺允许您为异步结果返回承诺,它们不会使任何内容同步。您需要将
var combinedData={…}
和requestedSchema.forEach(函数(字段))放入{…
在内部调用,然后在Promise上调用回调。所有(…)
感谢@Bergi,这非常有用!“在返回数据之前运行两个api调用”-这是不可能的,您不能立即返回异步调用的结果。“我被告知使用javascript承诺是实现这一点的最佳方法。”-承诺允许您为异步结果返回承诺,它们不会使任何内容同步。您需要将var combinedData={…}
和requestedSchema.forEach(函数(字段){…
调用放在内,然后在promise.all(…)上进行回调
谢谢@Bergi这太有用了!应用程序脚本不支持异步调用。你可以尝试创建一个云函数并从连接器调用该云函数。谢谢!-我会尝试这种方法!@MinhazKazi-我还没有尝试使用连接器中的云函数-有什么好的演示吗?应用程序脚本不支持t异步调用。您可以尝试创建一个云函数并从连接器调用该云函数。谢谢!-我会尝试这种方法!@MinhazKazi-我还没有尝试使用连接器中的云函数-有什么好的演示吗?