首页 > 解决方案 > Google Data Studio 连接器:兑现承诺?

问题描述

我正在尝试设置自定义 Google Data Studio 连接器。

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

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

这是承诺的示例:

    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;
    }
  });

标签: javascriptgoogle-apps-scriptgoogle-data-studio

解决方案


看起来要让它正常工作的唯一方法就是一个接一个地进行两次获取。

它并不理想 - 但希望 Google 会为 Data Studio 连接器改进这一点


推荐阅读