Javascript 是否将回调函数传递给d3.xml?

Javascript 是否将回调函数传递给d3.xml?,javascript,d3.js,scope,callback,Javascript,D3.js,Scope,Callback,假设我在函数中使用d3.xml(),将SVG资产加载到浏览器中。如果我想在资产加载到内存后调用回调函数(“cb”),我该如何做 作为示例代码,我尝试了以下方法: var svg_xml = null; var load_svg = function(svg_path, cb) { d3.xml(svg_path, "image/svg+xml", function(error, xml) { if (error) throw error; svg_xml

假设我在函数中使用
d3.xml()
,将SVG资产加载到浏览器中。如果我想在资产加载到内存后调用回调函数(“
cb
”),我该如何做

作为示例代码,我尝试了以下方法:

var svg_xml = null;
var load_svg = function(svg_path, cb) {
    d3.xml(svg_path, "image/svg+xml", function(error, xml) {
        if (error) throw error;
        svg_xml = xml;
        if (cb) cb;
    });
};
然后,要在脚本的其他位置测试回调,请执行以下操作:

load_svg("/foo/bar/baz.svg", function() {
    console.log("baz.svg loaded!");
});
SVG最终被加载到内存中。但是,不会调用回调-没有日志消息结果


load\u svg
内部的
cb
的作用域是否存在问题,以致
d3.xml()
不知道
cb
是什么?

您只是忘记调用回调
cb()


您只是忘记调用回调函数
cb()

var svg_xml = null;
var load_svg = function(svg_path, cb) {
    d3.xml(svg_path, "image/svg+xml", function(error, xml) {
       if (error) throw error;
       svg_xml = xml;
       if (cb) cb();
   });
};