首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回d3.js中的全局变量

返回d3.js中的全局变量
EN

Stack Overflow用户
提问于 2015-09-01 21:15:36
回答 1查看 1.2K关注 0票数 0

我需要得到这个叫做地图的算法的结果。这个结果是异步的,这就是它不能使用定义全局变量的原因。我需要得到生成以下内容的json对象:"features.features“。

代码语言:javascript
复制
d3.json ("mapaoriginal.topojson" function (topology) {
                            var = cartogram features (topology, topology.objects.collection.geometries);
                            d3.select ("SVG")
                                .attr ("width", 1000)
                                .attr ("height", 500)
                              .selectAll ("path")
                                .data (features.features)
                                .enter ()
                              .append ("path")
                                .attr ("d" cartogram.path);
        })

我的想法是拥有一些东西。

代码语言:javascript
复制
result = features.features;

然后在函数之外使用“结果”。如果我定义了一个全局变量,它总是显示为未定义的。我怎么才能摆脱我所需要的功能?

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 22:19:00

假设是异步的是d3.json,而不是地图。如果制图是异步的,则必须检查文档/代码,以确定是否有一种方法可以在操作完成时提供回调函数(否则,如果可以使用setInterval定期检查操作是否完成,则必须使用全局事件处理程序-除非没有其他选择)。

然后在函数外使用“结果”。

只有在异步操作完成后才初始化result。因此,如果要获取值,则必须等待回调(函数)开始执行。

如果我定义了一个全局变量,它总是显示为未定义的。我怎么才能摆脱我所需要的功能?

您可以定义一个单独的函数来执行您想用features.features做的事情,并在回调中调用它。这将有助于将代码行保留在回调函数之外。

有点像

代码语言:javascript
复制
d3.json ("mapaoriginal.topojson" function (topology) {
      // do current stuff
      // myFunction(features.features) that uses features.features
})

function myFunction(f) {
     // do stuff with f (features.features)
}

还有一种方法是使用全局偶数处理程序侦听JSON响应,或者定期设置setInterval以检查全局变量值--但是,这几乎总是导致难以维护代码,因此不建议这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32341028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档