gpt4 book ai didi

javascript - 通过d3 queue().defer()获取的数据什么时候出现

转载 作者:行者123 更新时间:2023-11-30 15:12:42 26 4
gpt4 key购买 nike

考虑以下代码片段 - 它试图跟踪通过 d3.queue().defer() 发生的数据操作的进度:

var data = [];
function analyze(error, f ) {
if (error) {
console.log(error);
}
console.log('Inside analyze: f.length=' + f.length);
data.push(f);
}
var q = d3.queue()
.defer(d3.csv, fnames[0])
.await(analyze);

console.log('after queue: data.len=' + data.length);

function updateViz(data2) {
// Do some d3 stuff with data2.. takes some time..
// ..
console.log('Finished updateViz: data2.len=' + data2.length);
}

updateViz(data);
console.log('after updateViz: len=' + data.length);

chrome javascript 控制台中看到的输出是:

enter image description here

然后:数据仅在适度冗长的操作 (udpateViz()) 后出现。

问题是:我需要在该方法的开始 处可用的数据。也更一般地说:可以做些什么来确定 queue().defer() 的完成 - 以便后续操作可以依赖于存在的数据?

最佳答案

d3.queue 是一个异步函数,这意味着进一步代码的执行(如调用 updateViz)不会等待它完成。最简单的解决方案是将依赖于 d3.queue 完成的代码放入其回调函数中。 d3.queue 的回调函数总是在所有延迟步骤完成后执行。

var q = d3.queue()
.defer(d3.csv, fnames[0])
.await(updateViz);

function updateViz(error, data2) {
if (error) {
console.log(error);
}

updateViz(data2);
}

关于javascript - 通过d3 queue().defer()获取的数据什么时候出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44884254/

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