在tableau javascript中同步调用

时间:2018-05-16 10:20:56

标签: javascript tableau

我正在尝试使用tableau进行同步调用。

var checkLen = $s_filter_i.length;
for (i = 0; i < checkLen; i++) {
    var filterValfscr = $s_filter_i[i].VALUE;
    Send_Tablo(filterValfscr);
}

调用此函数Send_Tablo(filterValfscr)时,它会运行以下代码。

但问题是在我收到回复表getSummaryDataAsync()之前它再次出现函数召回Send_Tablo(filterValfscr)我得到最新的请求数据而不是第一次数据请求。

function Send_Tablo() {
    var filter_indx = JSON.parse(window.localStorage.getItem('filter_indx'));
    var arry = [];

    for (var i = 0; i < filter_indx.s_filter_i.length; i++) {
        Attr_lab_name = filter_indx.s_filter_i[i].ATTRIBUTELABEL;
        arry.push(filter_indx.s_filter_i[i].VALUE);  
    }

    currentViz.getWorkbook().changeParameterValueAsync('Attribute_Label', filterValfscr, Attr_lab_name, arry);
    alert(filterValfscr);
    var fScr_data;
    sheet = currentViz.getWorkbook().getActiveSheet();
    sheet.getSummaryDataAsync(options).then(function (t) {
        data = t.getData();
        console.log("Data", data);
        frscr_demo();
    });

    function frscr_demo() {
        //var fScr_data;
        currentViz.getWorkbook().getActiveSheet().applyFilterAsync(Attr_lab_name, arry, tableau.FilterUpdateType.REPLACE);
        sheet = currentViz.getWorkbook().getActiveSheet();
        sheet.getSummaryDataAsync(options).then(function (t) {
            fScr_data = t.getData();
            console.log("FSCR", fScr_data);
            var aa = $(fScr_data).length;
        });
    }
}

我试图实现的是Send_Tablo()应该在从for循环运行Send_Tablo()的第二次迭代之前首先运行所有Async函数。

让我知道我做错了什么?提前谢谢。

0 个答案:

没有答案