Javascript DataStudioConnector:运行承诺?

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

我正在尝试设置自定义DataStudio连接器

在“getData”调用中,我需要在返回数据之前运行两个api调用。我被告知,使用javascript承诺是实现这一目标的最佳方式

如何使“GetData”方法仅在承诺完成后返回?这可能吗

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-我还没有尝试使用连接器中的云函数-有什么好的演示吗?