Javascript 未执行d3.json()回调中的代码
我试图加载一个GeoJSON文件,并使用它作为D3v5的基础绘制一些图形 问题是浏览器跳过了Javascript 未执行d3.json()回调中的代码,javascript,d3.js,Javascript,D3.js,我试图加载一个GeoJSON文件,并使用它作为D3v5的基础绘制一些图形 问题是浏览器跳过了d3.json()调用中包含的所有内容。我尝试插入断点进行测试,但浏览器跳过了断点,我无法找出原因 下面是代码片段 d3.json("/trip_animate/tripData.geojson", function(data) { console.log("It just works"); // This never logs to console. //...all the rest }
d3.json()
调用中包含的所有内容。我尝试插入断点进行测试,但浏览器跳过了断点,我无法找出原因
下面是代码片段
d3.json("/trip_animate/tripData.geojson", function(data) {
console.log("It just works"); // This never logs to console.
//...all the rest
}
代码从最初的console.log()
继续,但我省略了所有代码,因为我怀疑问题在于d3.json
调用本身 从D3 v4到v5的has签名。它已从现在已弃用的模块d3请求移动到新模块。从v5开始,D3使用了有利于较旧的XMLHttpRequest
,并反过来采用了来处理这些异步请求
d3.json()
的第二个参数不再是处理请求的回调,而是一个可选对象d3.json()
现在将返回您可以在其方法中处理的承诺
因此,您的代码变为:
d3.json("/trip_animate/tripData.geojson")
.then(function(data){
// Code from your callback goes here...
});
随着fetchapi的引入,调用的错误处理也发生了变化。v5之前的版本使用传递给d3.json()
的回调的第一个参数来处理错误:
d3.json(url, function(error, data) {
if (error) throw error;
// Normal handling beyond this point.
});
从D3V5开始,如果遇到错误,D3.json()
返回的承诺将被拒绝。因此,可以采用以下方法处理这些拒收:
。然后(onCompleted,onRejected)
d3.json("/trip_animate/tripData.geojson")
.then(function(data) {
// Code from your callback goes here...
})
.catch(function(error) {
// Do some error handling.
});
从D3 v4到v5的has签名。它已从现在已弃用的模块d3请求移动到新模块。从v5开始,D3使用了有利于较旧的XMLHttpRequest
,并反过来采用了来处理这些异步请求
d3.json()
的第二个参数不再是处理请求的回调,而是一个可选对象d3.json()
现在将返回您可以在其方法中处理的承诺
因此,您的代码变为:
d3.json("/trip_animate/tripData.geojson")
.then(function(data){
// Code from your callback goes here...
});
随着fetchapi的引入,调用的错误处理也发生了变化。v5之前的版本使用传递给d3.json()
的回调的第一个参数来处理错误:
d3.json(url, function(error, data) {
if (error) throw error;
// Normal handling beyond this point.
});
从D3V5开始,如果遇到错误,D3.json()
返回的承诺将被拒绝。因此,可以采用以下方法处理这些拒收:
。然后(onCompleted,onRejected)
d3.json("/trip_animate/tripData.geojson")
.then(function(data) {
// Code from your callback goes here...
})
.catch(function(error) {
// Do some error handling.
});
@Timmmm,.then方法可以提供一个可选的第二个函数,如果承诺最终没有实现,则调用该函数:
。然后(函数(数据){},函数(错误){})
@Timmmm或者,您可以使用.catch(函数(错误){})
,这在很大程度上等同于Andrew的建议,但在口头上更加明确。@timmm,.then方法可以提供一个可选的第二个函数,如果承诺最终没有实现,则调用该函数:。然后(函数(数据){},函数(错误){})
@Timmmm。或者,您可以使用.catch(函数(错误){})
,这在很大程度上等同于Andrew的建议,但在口头上更加明确。