繁体   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