【发布时间】:2015-11-24 08:40:13
【问题描述】:
我已经学习过很多关于回调的教程(例如here、on SO 和 this gem)
到目前为止,最好的一个是this 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. 之后的所有方法都是我在 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 字符串。这里出了什么问题?我不知道为什么这不起作用。
【问题讨论】:
-
您的代码看起来不错,至少流程是您所期望的(您可以从输出中看到)。您确定问题不在于您遗漏的
draw()部分吗? -
如果我要复制 JSON 字符串并将其直接分配给
var data并调用draw(data);它会起作用,所以我看不到那里的问题。
标签: javascript json d3.js