Javascript 在将JSON加载到canvas-Fabric JS后获取对象时遇到问题

Javascript 在将JSON加载到canvas-Fabric JS后获取对象时遇到问题,javascript,jquery,html,canvas,fabricjs,Javascript,Jquery,Html,Canvas,Fabricjs,我正在用Fabric.JS构建一个模板工具。我已经成功地将画布序列化为DatalessJSON,然后将DatalessJSON反序列化回画布。但是,一旦加载了JSON,我在尝试处理对象时遇到了一个问题 function loadTemplate() { var template = $('#JSONserial').val(); canvas.clear(); canvas.loadFromDatalessJSON(template); canvas.renderAll();

我正在用
Fabric.JS
构建一个模板工具。我已经成功地将画布序列化为
DatalessJSON
,然后将
DatalessJSON
反序列化回画布。但是,一旦加载了
JSON
,我在尝试处理对象时遇到了一个问题

 function loadTemplate() {


 var template = $('#JSONserial').val();
 canvas.clear();
 canvas.loadFromDatalessJSON(template);
 canvas.renderAll();

 var allObjects = canvas.getObjects();

 console.log(allObjects);
所以在这里,画布肯定成功地加载了
JSON
,并且所有对象看起来都没有问题。但是,当我尝试
getObjects
函数时,
console.log
语句返回
“[]”

我已经用
'name'
属性扩展了
toObjects
函数,这样我就可以识别每个
JSON
加载的对象,但我甚至不能做到这一点,因为我根本无法提取对象


有什么想法吗

loadFromDatalessJson是异步的

loadFromDatalessJSON(json, callback, reviver)
使用回调在对象加载结束时运行代码

 function loadTemplate() {
 var template = $('#JSONserial').val();
 canvas.clear();
 var allObjects = [];
 canvas.loadFromDatalessJSON(template, function(){
   allObjects = canvas.getObjects();
   console.log(allObjects);
   canvas.renderAll();
 });

}

我想我明白了。因此,在加载对象之后似乎只有很短的时间,而这些对象不可调用。我将“getObjects()”函数放在一个超时为100的超时函数中,它现在似乎正在工作。这是错误的方法。核对答案