假设我在函数中使用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最终加载到内存中。但是,不会调用回调 - 没有日志消息结果。
cb
内的load_svg
范围是否存在问题,d3.xml()
不知道cb
是什么?
答案 0 :(得分:2)
您忘记致电回拨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();
});
};