2016-06-25 4 views
0

ブラウザ内にSVGアセットを読み込む関数内でd3.xml()を使用します。アセットがメモリにロードされた後にコールバック関数( "cb")を呼びたい場合は、どうすればよいですか?コード例としてd3.xmlにコールバック関数を渡しますか?

、私は、次の試み:

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が分からないようですか?

答えて

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(); 
    }); 
}; 
コールバックを呼び出すために忘れてしまいました
関連する問題