作为一个JQUERY/d3-noob,似乎我无法弄清楚如何使这项工作:
supdog = d3.json(dataPath, function(jsondata){
return jsondata;
})
console.log(supdog);
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Ber*_*ema 20
除了你的问题描述非常简洁之外,问题似乎是你对什么回归的假设.
函数d3.json()是一个直接返回的异步函数(我假设一个未定义的值).只有从后端接收数据时,才会调用传递给它的回调函数.显然,这里的上下文不同,你的回调的返回值不会自动成为d3.json的返回值(因为这个已经返回"long").
你想做的可能是这样的:
var jsondata;
d3.json(dataPath, function(dataFromServer) {
jsondata = dataFromServer;
}
console.log(jsondata);
Run Code Online (Sandbox Code Playgroud)
更新1: 显然,上面的例子仍然不完全正确.在返回d3.json()之后直接调用console.log().因此,服务器可能尚未完全发送回复.因此,您只能在返回回调时访问数据.固定示例:
var jsondata;
function doSomethingWithData() {
console.log(jsondata);
}
d3.json(dataPath, function(dataFromServer) {
jsondata = dataFromServer;
doSomethingWithData();
})
Run Code Online (Sandbox Code Playgroud)
对于(有点愚蠢但是)工作示例,请参阅:http://jsfiddle.net/GhpBt/10/
更新2: 上面的示例演示了代码执行的顺序,但并不值得为大多数漂亮的代码付出代价.我自己不会使用这个"全局"变量并简化上面的例子:
function doSomethingWithData(jsondata) {
console.log(jsondata);
}
d3.json(dataPath, doSomethingWithData);
Run Code Online (Sandbox Code Playgroud)
注意doSomethingWithData如何直接传递给d3.json而不是在匿名内部函数中单独调用它.
注意:这不是d3.js的特殊问题.基本上,所有异步的javascript函数都可能以类似的方式运行.如果它们返回某些内容,则它不会是传递的回调的返回值.
| 归档时间: |
|
| 查看次数: |
11446 次 |
| 最近记录: |