如果我使用Javascript调用此函数,它将起作用,并将对象添加到场景:
var loader = new THREE.FBXLoader();
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
scene.add(object);
});
}
但是,如果我替换:
scene.add(object);
具有:
return object;
似乎返回未定义。
我尝试使用Promises以及“加载管理器”,但两者似乎只能将对象添加到场景中,而不能返回对象。
我认为这是因为彼此之间有两个嵌套函数,并且加载是异步的。但是我不确定如何解决此问题,因为这是加载对象的标准方法。
答案 0 :(得分:2)
load
是异步的-使用回调或使用等待,即
const afterload = object => { console.log(object); }
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
afterload(object);
});
}
或
async function returnFBX(PATH, scene) {
return loader.load('obj/' + PATH + '.fbx', function (object) {
return object;
});
}
let afterloadObject = await returnFBX( ... )