使用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方法来处理错误

请问如何使用Promises方法来等待OBJLoaderload函数加载完成后将threejs中保存加载的obj文件的geometrynormals数组在OBJLoaderload函数的其他地方使用

原文地址: http://www.cveoy.top/t/topic/ige1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录