[英]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.