请问如何使用回调、Promises或asyncawait等方法来等待OBJLoaderload函数加载完成后将threejs中保存加载的obj文件的geometrynormals数组在OBJLoaderload函数的其他地方使用
使用回调方式:
OBJLoader.load('model.obj', function(geometry) {
// 在加载完成后执行的回调函数
console.log(geometry.normals); // 在回调函数内部使用
// 可以在这里执行其他操作
});
使用Promises方式:
function loadOBJ() {
return new Promise(function(resolve, reject) {
OBJLoader.load('model.obj', function(geometry) {
resolve(geometry);
}, null, reject);
});
}
loadOBJ().then(function(geometry) {
console.log(geometry.normals); // 在Promise的then方法内部使用
// 可以在这里执行其他操作
}).catch(function(error) {
console.error(error);
});
使用async/await方式:
async function loadOBJ() {
try {
const geometry = await new Promise(function(resolve, reject) {
OBJLoader.load('model.obj', function(geometry) {
resolve(geometry);
}, null, reject);
});
console.log(geometry.normals); // 在async函数内部使用
// 可以在这里执行其他操作
} catch (error) {
console.error(error);
}
}
loadOBJ();
注意:以上代码是伪代码,具体实现可能需要根据实际情况进行调整
原文地址: http://www.cveoy.top/t/topic/iget 著作权归作者所有。请勿转载和采集!