我正在尝试加载GeoJSON文件并使用它作为D3 v5 的基础绘制一些图形。
问题在于浏览器正在跳过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.json
已经改为从D3V4到V5。它已从现已弃用的模块d3请求移至新的d3提取模块。从v5开始,D3使用Fetch
API
来支持旧版本XMLHttpRequest
,并依次采用Promises来处理那些异步请求。
第二个参数d3.json()
不再是处理请求的回调,而是一个可选RequestInit
对象。d3.json()
现在将返回您可以使用其.then()
方法处理的Promise 。
这样,您的代码将变为:
d3.json("/trip_animate/tripData.geojson")
.then(function(data){
// Code from your callback goes here...
});
调用的错误处理也随着Fetch API的引入而发生了变化。v5之前的版本使用传递给的回调的第一个参数d3.json()
来处理错误:
d3.json(url, function(error, data) {
if (error) throw error;
// Normal handling beyond this point.
});
从D3 v5开始,d3.json()
如果遇到错误,将拒绝由返回的承诺。因此,可以应用处理这些拒绝的普通JS方法:
将拒绝处理程序作为第二个参数传递给.then(onFulfilled, onRejected)
。
用于.catch(onRejected)
向承诺中添加拒绝处理程序。
应用第二个解决方案,您的代码就变成了
d3.json("/trip_animate/tripData.geojson")
.then(function(data) {
// Code from your callback goes here...
})
.catch(function(error) {
// Do some error handling.
});
问题内容: 我用来加载包含我的数据的JSON文件,如下所示: 如果我做一个,我可以看到既不是空的也不是。但是,它似乎不包含我的数据数组,而是包含其他内容。 我在这里做错了什么? 注意:这是一个自我回答的问题,试图对以前很多问题都涉及到且API未明确解释的主题提供“规范”的问答。以下答案是对这些问题的一般指导。 问题答案: TL; DR (以及,等)不返回加载/解析的文件的内容。取而代之的是,它返回
问题内容: 我有一段使用解释器执行的JavaScript代码。 如何测量这些数据库插入操作所花费的时间?我可以计算这段代码前后的日期值之差,但是由于代码的异步特性,这将是不正确的。 问题答案: 使用Node.js 和:
我使用解释器执行了一段JavaScript代码。 如何度量这些数据库插入操作所花费的时间?我可以计算这段代码之后和之前的日期值的差值,但这是不正确的,因为代码的异步性质。
我试图在一个项目上执行一些PHP代码(使用Dreamweaver),但代码没有运行。 当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到)。Apache运行正常(我正在使用XAMPP),PHP页面打开正常,但PHP代码没有执行。 有人对正在发生的事情有什么建议吗? 编辑:代码..:
问题内容: 我有一个JavaScript Ajax调用(jQuery.ajax),它不执行成功回调函数。 我在firebug中看到,该请求已发布,并且按预期返回了有关json的正确结果。怎么了? 问题答案: 很多次,我都遇到过类似的问题,大多数时候,原因是json格式错误。尝试以文本数据类型获取结果,看看这是否是您的问题。 另外,我想问一下您是否使用了“&jsoncallback =?”之类的参数
我们使用的是spring Boot2,在集成测试中,我们需要在事务中手动执行一些代码,在事务结束时和断言之后,我们希望回滚该事务。 我们使用显式定义的事务而不是@Transactional,因为有时我们需要在Test2事务中执行。 你能告诉我如何在我们的例子中使用回滚来回滚这两个事务吗?这是我们维护的较老的代码,所以如果有可能在引导2中做得更好,我将非常感谢任何建议。我们只需要在一个测试中执行2个