Я устанавливаю веб-соединитель данных Tableau, но я хочу сделать 2 или более вызовов API для загрузки в одну схему. Как мне это сделать?
Я пытался переключиться на обещания , обычные циклы for-each и несколько других методов, но qtwebkit и обычный javascript не работают одинаково. В таблице есть поток , но он никогда не решался, и решения там, похоже, не работают. Мой текущий код для моей функции getData приведен ниже (моя схема, кажется, работает нормально)
myConnector.getData = function (table, doneCallback) {
var query_data = JSON.parse(tableau.connectionData);
var symbol_list = query_data.symbol_list.split(",");
var tasks = [];
// This does the asynchronization
$.each(symbol_list, function (index, symbol) {
var apicall = create_apicall(query_data, symbol);
var task = $.getJSON(apicall, function (resp) {
var tableData = [];
var table_data = map_data_to_schema(query_data, resp, symbol);
table.appendRows(table_data);
doneCallback();
})
tasks.push(task);
$.when(tasks).then(function () {
// do nothing
})
})
};
Когда я запускаю его в симуляторе, он работает нормально, выполняет все вызовы API и корректно обновляет их в таблицах. (симулятор скачан из таблицы SDK). Тем не менее, когда я запускаю его в tableau, он просто возвращает первый вызов API, который я ему передал, вместо того, чтобы сколько я его пропустил.
create_apicall просто возвращает вызов API.
Любая помощь приветствуется.