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();
});
};