簡體   English   中英

JavaScript回調函數似乎可以正常工作,但無法繪制數據

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM