请问如何使用Promises方法来等待OBJLoaderload函数加载完成后将threejs中保存加载的obj文件的geometrynormals数组在OBJLoaderload函数的其他地方使用
使用Promises方法来等待OBJLoader.load函数加载完成后,可以使用Promise对象的resolve和reject方法来实现。
首先,创建一个Promise对象,并在OBJLoader.load函数的回调函数中调用resolve方法来将加载的obj文件的geometry.normals数组作为参数传递给resolve方法。
function loadOBJ(url) {
return new Promise((resolve, reject) => {
const loader = new THREE.OBJLoader();
loader.load(url, (object) => {
const geometry = object.children[0].geometry;
resolve(geometry.normals);
}, null, reject);
});
}
然后,在其他地方使用该Promise对象,可以通过调用then方法来获取加载完成后的geometry.normals数组。
loadOBJ('path/to/obj/file.obj')
.then((normals) => {
// 在这里使用加载完成后的geometry.normals数组
console.log(normals);
})
.catch((error) => {
console.error('Failed to load OBJ file:', error);
});
在上述代码中,loadOBJ函数是一个封装了OBJLoader.load函数的Promise对象。在loadOBJ函数内部,创建了一个Promise对象,并在OBJLoader.load函数的回调函数中调用resolve方法来传递加载的obj文件的geometry.normals数组。在其他地方使用loadOBJ函数时,通过调用then方法来获取加载完成后的geometry.normals数组。如果加载出错,则会调用catch方法来处理错误
原文地址: http://www.cveoy.top/t/topic/ige1 著作权归作者所有。请勿转载和采集!