等待2个AJAX请求完成(d3.js)以优化临时等待?
我需要2个ajax请求在运行第一个请求的回调函数run_ACTIONS()之前完成,但是如何等待它(优化临时等待)等待2个AJAX请求完成(d3.js)以优化临时等待?,ajax,d3.js,Ajax,D3.js,我需要2个ajax请求在运行第一个请求的回调函数run_ACTIONS()之前完成,但是如何等待它(优化临时等待) 如果不这样做,则使用常规回调概念: function dostuff(callWhenDone) { // ... d3.tsv(ajaxUrl, function callWhenTSVCompletes(data) { // ... d3.json(ajaxUrl, function callWhenJSONCompletes(header) {
如果不这样做,则使用常规回调概念:
function dostuff(callWhenDone) {
// ...
d3.tsv(ajaxUrl, function callWhenTSVCompletes(data) {
// ...
d3.json(ajaxUrl, function callWhenJSONCompletes(header) {
//...
callWhenDone(); // now we're done.
});
});
}
使用这段代码,我同时运行2个AJAX查询,并在运行回调函数run_ACTIONS()之前等待最后一个答案。但这种方法在我看来并不优雅
function ajax() {
var ready=false,
datatsv=false;
d3.tsv( ajaxUrl,
function(data) {
if (ready)
RUN_ACTIONS(HEADER, data);
else {
ready=true;
datatsv=data;
}
}
);
d3.json( ajaxUrl,
function(header) {
define_Header(header);
if (ready)
RUN_ACTIONS(header, datatsv);
else {
ready=true;
}
}
);
}
如果你有时间的话,会更漂亮/更干净一点:这种方法会变慢,因为我的php查询tsv持续3秒,我需要快速回答。不知道tsv和JSON做什么,这就是你的问题。如果你不需要等待TSV,那么把它关掉,然后忘记它。如果你做了,3秒钟是你自己做的@AdamPearce有很多级联修饰语,对于两个调用,您可能不需要使用瀑布或回调队列,也可以使用Mike Bostock的队列:
function ajax() {
var ready=false,
datatsv=false;
d3.tsv( ajaxUrl,
function(data) {
if (ready)
RUN_ACTIONS(HEADER, data);
else {
ready=true;
datatsv=data;
}
}
);
d3.json( ajaxUrl,
function(header) {
define_Header(header);
if (ready)
RUN_ACTIONS(header, datatsv);
else {
ready=true;
}
}
);
}