[英]JavaScript callback function seems to work, but does not draw the data
我已经看过很多关于回调的教程(例如, 此处 , SO和此gem )
到目前为止,最好的是这种宝石 。 特别是这部分帮助我理解了。
function addOne(thenRunThisFunction) {
waitAMinuteAsync(function waitedAMinute() {
thenRunThisFunction()
})
}
addOne(function thisGetsRunAfterAddOneFinishes() {})
因此,我按照那里的描述实施了它。 现在,一切似乎都可以在控制台输出上运行,但是它并不能按预期方式呈现我的d3强制定向图 。
[some fancy variables used by force graph]
function draw(json) {
java.alert(json);
[awsome force graph stuff]
};
var data = undefined;
function readInputStream(callback){
data = java.getJSONObject();
if(!data == ""){
java.alert("success");
} else {
java.alert("failure");
}
callback();
}
function prepareDraw() {
java.alert("prepare called");
draw(data);
}
readInputStream(prepareDraw);
请注意, java
是一个标识符。 我在JavaFX WebView和java.
之后的所有方法中全部运行java.
是我在JavaScript中使用的实际Java方法。 看到这个:
public class JStoFXBridge {
private String json;
public String getJSONObject(){
return json;
}
public void setJSONObject(String string){
this.json = string;
}
public void alert(String alert){
System.out.println("Alert: " + alert);
}
}
现在,我的控制台将打印:
Alert: success
Alert: prepare called
Alert: {"nodes":[{"name":"sepp","id":0,"group":2},{"name":"hans","id":1,"group":6}, [...]
哪种是我的JSON字符串的正确格式,并且(据我所知)以正确的顺序执行。 data
被填充且不为空。 the callback method
被调用。 我的draw function
具有一个已filled & valid
JSON字符串。 这是怎么了? 我不知道为什么这行不通。
有时候比您想像的要容易...
java.alert("prepare called");
var json = JSON.parse(data);
draw(json);
问题: data
是一个字符串,d3需要一个JSON对象。 在这里观看 。 新的输出:
Alert: success
Alert: prepare called
Alert: [object Object]
现在将图形渲染得很好。 var data = {"nodes":[{"name":"sepp", [...]
起作用是因为JavaScript将其解释为JSON对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.