function FileLoad(file) {
svgEditor.loadFromURL(file);
var svg = document.getElementById("svgID");
code continues....
}
我正在尝试在svg加载后对其进行操作。
但是代码没有进一步执行,开发人员工具中也没有显示
我正在使用SVG-Edit toool。
答案 0 :(得分:1)
svgEditor.loadFromURL()
返回一个Promise。从本质上讲,加载始终是异步操作。您需要等待直到完成:
function FileLoad(file) {
svgEditor.loadFromURL(file).then(function () {
var svg = document.getElementById("svgID");
// code continues....
}, function (error) {
// load error handling
});
}
从函数的命名来看,好像您将其用于实例化对象一样。但是,使用FileLoad
函数时,请注意SVG内容将不会同步提供,只有在诺言解决之后才可用。在使用new
进行调用的情况下,可能的模式如下所示(callback
函数包含您对实例化对象所做的所有操作):
function FileLoad(file, callback) {
svgEditor.loadFromURL(file).then(function () {
var svg = document.getElementById("svgID");
code continues....
}, function (error) {
// load error handling
}).then(callback.bind(this));
}
fileInstance = new FileLoad(url, callback);
编辑:该功能在4.0.0版中更改了其签名。对于3.2.0及更早版本,您可以在配置对象中need to pass使用回调函数:
function FileLoad(file) {
svgEditor.loadFromURL(file, {
callback: function (success) {
if (success) {
var svg = document.getElementById("svgID");
// code continues....
} else {
// load error handling
}
}
});
}