gpt4 book ai didi

callback - 谷歌图表 API : adding arguments to existing callback

转载 作者:行者123 更新时间:2023-12-02 22:14:21 30 4
gpt4 key购买 nike

我有一个页面,其中包含从 Google 电子表格生成的许多图表。

典型代码如下所示:

var url = "http://my.googlespreadsheet.com/tq?argumentshereblahblahblah";
// create and send off the query
var query = new google.visualization.Query( url );
query.send( handleQueryResponse );

function handleQueryResponse(response) {
// omitted code to handle errors
// create new chart object, specify location in page
var chart = new google.visualization.BarChart( document.getElementById('chart-' + i));
// draw chart
chart.draw( data, {} );
}

由于我在页面上有多个图表,因此我想以编程方式创建它们,而不必使用看起来都相同的 x 函数,只是图表位置和标题不同。我已经设置了一系列电子表格引用,我对其进行迭代,将每个引用传递给运行上述代码的函数:创建查询、发送查询、处理响应。我想要做的是将一个额外的参数传递给handleQueryResponse回调,以便我可以指定图形应该在页面上的位置。不过,我无法找到一种方法将我的变量放入handleQueryResponse中。如果我这样做:

// array of spreadsheet refs
var quArr = ['gid=2&range=D2%3AE10&headers=-1','gid=2&range=D15%3AE19&headers=-1', (etc.) ];
var base_url = "http://my.googlespreadsheet.com/tq?";
var i; // iterator

// iterate through the spreadsheet refs and send off the queries for each
for (i = 0; i < quArr.length; i++){
var url = q_base + quArr[i];
var query = new google.visualization.Query( url );
query.send( handleQueryResponse );
}

// deal with the responses
function handleQueryResponse(response) {
// omitted code to handle errors
// get the data from the response
var data = response.getDataTable();
// create new chart object, specify location in page
// anchors in the page correspond to where the chart should go
var chart = new google.visualization.BarChart( document.getElementById('chart-' + i));
chart.draw( data, { extra args } );
}

...返回响应的异步性质意味着迭代器与我发送请求时的值不同。

来自API docs的额外信息:

send(callback)

Sends the query to the data source. callback should be a function that will be called when the data source responds. The callback function will receive a single parameter of type google.visualization.QueryResponse. Return value: none

问题:

1) API 文档中关于 query.send(callback) 的内容是否本质上意味着我无法更改回调以获取额外的参数?

2)任何人都可以提出解决这个问题的另一种方法吗?

最佳答案

刚刚找到了我自己问题的答案 - 哇哦!应该再坚持一段时间。 ;)

如果它对其他人有用,我创建了一个新函数来执行查询并使用闭包进行回调。这是重新组织的代码:

for (var i = 0; i < quArr.length; i++){
var url = q_base + quArr[i];
var query = new google.visualization.Query( url );
doQuery(query, i);
}

function doQuery(q, it){
q.send( function(response){
// omitted error handling code
var data = response.getDataTable();
var chart = new google.visualization.BarChart( document.getElementById('chart-' + it));
chart.draw( data, { other args } );
});
}

关于callback - 谷歌图表 API : adding arguments to existing callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531152/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com