OBJLoader出现异步问题-等待XHR完成加载
Asynchronous issue with OBJLoader - wait for XHR to finish loading
如何使OBJLoader简单地返回对象而不是将其添加到场景中?我遇到了一个同步问题,我的代码没有等待XHR请求完成,从而引发错误。
以下示例显示了问题:
var loader = new THREE.OBJLoader();
// return a mesh from an obj file
function createObject( objFile, objName ) {
object3d = loader.load( objFile , function ( object ) {
object.name = objName;
console.log(object);
return object;
})
return object3d;
}
car = createObject('path/to/car.obj', 'abc123');
car.position.y = 10;
这会在控制台中生成以下内容:
1. Uncaught TypeError: Cannot set property 'position' of undefined test.html:171
2. XHR finished loading: GET "path/to/car.obj". Three.js:11377
3. THREE.Object3D {id: 7, uuid: "9E8DC838-E68B-4FCA-A6AD-863D5D06D31F", name: "abc123", parent: undefined, children: Array[1]…}
因此,存在错误(1),因为"car.position.x"发生在XHR请求正在进行且对象为null的情况下。我的代码不会等待。但(2)和(3)表明,不久之后,加载请求确实成功完成。
你知道我该怎么做吗?如何让createObject()等待XHR请求完成后再继续?还是这通常只是一种糟糕的排序方式?
您可以在方法中创建一个"容器",并在加载后将对象添加到该容器中。
var loader = new THREE.OBJLoader();
// return a mesh from an obj file
function createObject( objFile, objName ) {
var container = new THREE.Object3D();
loader.load( objFile , function ( object ) {
object.name = objName;
container.add( object );
})
return container;
}
car = createObject('path/to/car.obj', 'abc123');
car.position.y = 10;
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 如何显示 XHR 请求的加载图标
- 多次 xhr 加载
- 为什么Google Plus使用XHR加载CSS并将其附加到<样式>而不是使用
- 使用 XHR 请求加载图像
- 如何在科尔多瓦中加载相对于基本 href 的 XHR 请求
- 如何在加载带有ng-include的分部之前解决XHR请求
- XHR从单独的目录加载资源
- 是否可以防止使用XHR加载页面
- xhr响应上的脚本加载
- Xhr 上传事件加载问题
- XHR加载失败:POST
- 一个作为内容脚本加载的小型AngularJS应用能够发出XHR请求吗?
- XHR无法加载
没有& # 39;Access-Control-Allow-Origin& # 39;标头存在于 - Javascript XHR在响应中加载iframe
- PreloadJS标签加载,而不是xhr
- OBJLoader出现异步问题-等待XHR完成加载
- XHR 加载失败:开机自检
- XHR 加载视频