Angenommen, ich verwende d3.xml()
innerhalb einer Funktion, um ein SVG-Asset in den Browser zu laden. Wenn ich eine Callback-Funktion ("cb
") aufrufen möchte, sobald das Asset in den Speicher geladen wurde, wie würde ich dies tun?Callback-Funktion an d3.xml übergeben?
Als Beispiel-Code, habe ich versucht, die folgenden:
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;
});
};
Dann einen Rückruf an anderer Stelle im Skript zu testen:
load_svg("/foo/bar/baz.svg", function() {
console.log("baz.svg loaded!");
});
Der SVG wird schließlich in den Speicher geladen. Der Rückruf wird jedoch nicht aufgerufen - keine Protokollmeldung.
Gibt es ein Problem mit dem Bereich für cb
innerhalb load_svg
, so dass d3.xml()
nicht weiß, was cb
ist?