OBJLoader 的异步问题 - 等待 XHR 完成加载

2024-03-20

如何使 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OBJLoader 的异步问题 - 等待 XHR 完成加载 的相关文章

  • 使用Javascript自动打开弹出新窗口[重复]

    这个问题在这里已经有答案了 如何使用Javascript加载页面时打开弹出新窗口 我希望 当网站加载时 它会自动打开弹出新窗口 我使用以下内容 不行 尝试这个
  • Javascript图像编辑插件

    在哪里可以找到 Javascript 或 jQuery 图像编辑器插件 用户可以单击图像进行编辑 并且该插件允许他们进行裁剪 调整大小 旋转 翻转等 Pixastic http pixastic com lib 不再活跃 和CamanJS
  • 节点异步循环 - 如何使该代码按顺序运行?

    我知道有几个关于此的帖子 但根据我发现的那些帖子 这应该可以正常工作 我想在循环中发出 http 请求 并且不希望循环迭代 直到触发请求回调 我正在使用异步库 如下所示 const async require async const req
  • Webpack将js/css文件内容直接注入到index.html

    我有这样的代码
  • 应该使用encodeURI吗?

    javascript 的encodeURI 函数有任何有效用途吗 据我所知 当您尝试发出 HTTP 请求时 您应该 完整的 URI 您想要放入 URI 中的某些片段 可以是 unicode 字符串或 UTF 8 字节序列 在第一种情况下 显
  • 使用 jQuery live() 初始化插件?

    使用 jQuery 在特定类的所有当前和未来元素上自动初始化插件的最佳方法是什么 例如 假设我想要全部
  • 当key未知时如何获取js对象中的属性值

    我有一个对象数组 a 81 25 p 81 25 81 26 p 81 26 我想循环遍历数组并获取值p在每个元素中 for var key in a console log a key outputs 81 25 Object How d
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • FileReader 在 Ionic 2 中未触发 onloadend

    我正在尝试使用 cordova file plugin 读取本地文件 目前我可以读取本地目录的内容并选择单个文件 但我在获取文件内容时遇到问题 这是我的函数 从列表中选择文件后单击按钮即可调用该函数 import window resolv
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • axios 如何将 blob 与 arraybuffer 作为响应类型处理?

    我正在下载一个 zip 文件axios https www npmjs com package axios 为了进一步处理 我需要获取已下载的 原始 数据 据我所知 Javascript 有两种类型 Blob 和 Arraybuffers
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 如何在 Node.js 中打开 Windows-1255 编码文件?

    我有一个 Windows 1255 希伯来语 编码的文件 我希望能够在 Node js 中访问它 我尝试使用打开文件fs readFile 它给了我一个Buffer我无能为力 我尝试将编码设置为Windows 1255 但这没有被识别 我还
  • 如何使用 ReactJS 使表中的列可以以两种方式排序

    我正在 ReactJS 中构建一个简单的应用程序 它通过调用某个 API 来使用 JSON 数组 然后我将数组的结果填充到表中 我现在想让表的列可排序 我理想的情况是同时进行升序和降序排序 一旦我单击标题 当它按升序排序时 它应该按降序排序
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • 如何使用node.js获取屏幕分辨率

    我需要使用 node js 获取屏幕分辨率 但以下代码不起作用 var w screen width var h screen height 这也行不通 var w window screen width var h window scre

随机推荐

  • iOS 共享扩展不适用于图像网址

    我有一个使用这些规则的共享扩展
  • 什么时候应该使用布尔值而不是布尔值? [复制]

    这个问题在这里已经有答案了 什么时候应该使用布尔值而不是布尔值 我的意思是 为什么我想在应该包含 true 或 false 的变量中包含一个空值 大多数人 一个自发的答案是 如果该值未知 即 如果我们不知道该值是真还是假 但从编程的角度来看
  • 简单的域名正则表达式

    如何确保域名符合这 3 个简单标准 以 com net 结尾 不得以 http 或 https http www 或 https www 我已经设法理解了正则表达式的这一部分 它与第一个标准相对应 com net 但我不知道如何实现另外两个
  • 如何“执行”make文件

    我尝试在 code blocks 中使用 make 文件 但我做错了 我安装了包含编译器的版本 http sourceforge net projects codeblocks files Binaries 10 05 Windows co
  • Stripe 支付:来源与令牌/卡?

    我正在努力使用 stripe 设置定期付款 我正在使用react stripe elements来收集卡片信息 看起来有两种方法可以保存卡片供以后使用 this props stripe createToken this props str
  • 这个 gcc/clang 过去一指针比较行为符合还是非标准?

    尽管 C 标准明确认识到这样一种可能性 即指向 刚刚过去 一个对象的地址可能会偶然与指向 指向 另一个不相关对象的地址进行比较 但 gcc 和 clang 似乎都在假设没有指针的情况下进行操作观察到的指向刚刚经过一个对象的对象可能指向另一个
  • 在匿名块内显示选择结果

    我正在尝试调试过程中的 SELECT 并且我正在尝试使用匿名块 我希望 SQL Developer 只返回最后一个 SELECT 语句 但我收到错误 ORA 06550 line 21 column 5 PLS 00428 an INTO
  • 如何在 Dart 中创建私有变量?

    我想创建一个私有变量 但我不能 这是我的代码 void main var b new B b testB class A int private 0 testA print int value private private 5 class
  • Spritekit 动画没有改变

    我的游戏中有一个虚拟控制板 如果我点击并按住方向按钮之一 播放器就会朝正确的方向移动并显示正确的图像和动画 但是 如果我将手指从一个控件滑动到另一个控件 例如从右到下 播放器会向下移动 但图像和动画不会改变 直到我抬起手指 下面是我处理触摸
  • Logback:用 ******** 和最后两位数字替换 10 位数字

    我在我的模式 logback xml 中使用以下内容来替换日志中的 10 位数字 replace msg d 10 这种方法的一个问题是 它还匹配 11 位数字的前 10 位数字 有没有办法精确匹配10位数字 现在更大的问题是我需要显示这个
  • 无法在二进制文件中找到 .dtors 和 .ctors

    我正在读 黑客 剥削的艺术 一书 书中有一节解释了使用 dtors and ctors 我正在尝试重现本书的练习之一 但在我的可执行文件中没有这一部分 起初我以为问题是我正在编译 64 位 但现在我正在编译 32 位并且 dtors and
  • 如何在 Storybook 6.0 中自定义深色和浅色主题

    我正在使用浅色和深色主题制作 PWA 我想创建我的 Storybook 浅色和深色主题来反映这些主题 因此 我创建了一个函数 如果我向它传递 Material UI 主题和基本名称 它将返回一个新的 Storybook 主题对象 但是我如何
  • 仅当配置中的enableSessionState设置为true时才能使用会话状态

    我正在使用 vs 2010 使用 c 开发 Asp net MVC 2 应用程序 当我在调试模式下本地运行我的应用程序时 出现下面提到的错误 错误信息图片如下 错误消息文本如下 仅当enableSessionState设置为true时才能使
  • Linq to SQL 存储库是否应该实现 IDisposable

    在过去的几天里 我一直在使用 Linq 谷歌搜索大量有关存储库模式的信息 那里有很多信息 但它们往往是矛盾的 我仍在寻找明确的来源 我仍然不确定的一件事是存储库是否应该实例化它自己的 DataContext 并具有 SubmitChange
  • 如何实现气泡只有在完全缩放的情况下才可点击 d3js

    我这里有一个小问题 我正在使用这个例子 http bl ocks org mbostock 7607535 http bl ocks org mbostock 7607535 并且我修改了 flare json 文件如下 name flar
  • 自定义勺边框样式 - 响应式、自定义和动态边框样式 - 适合高度、自定义边框角 - 双描边 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法在 CSS 或 jQuery 中制作自定义勺子边框样式 就像下图一样 这里有一个小提琴 http jsfiddle net
  • 如何手动设置全息视图颜色条的限制?

    当我尝试输入自己的股票代码时 在较早的牢房中 ticker FixedTicker ticks range 0 10 在下面的单元格中 opts HeatMap colorbar True colorbar opts ticker tick
  • 错误:与nodejs程序连接时连接ECONNREFUSED 127.0.0.1:5432 [重复]

    这个问题在这里已经有答案了 我在 CentOS 8 机器上设置了一个 postgresql 服务器 并在同一台机器上运行了一个 js 程序 使用pg图书馆 const Pool require pg const pool new Pool
  • 如何更改 Android 的点击叠加标记?

    我制作了一个应用程序 当用户单击它时 我需要更改覆盖项目的可绘制对象 我正在使用以下代码来实现此效果 protected boolean onTap int index OverlayItem item mOverlays get inde
  • OBJLoader 的异步问题 - 等待 XHR 完成加载

    如何使 OBJLoader 简单地返回对象而不是将其添加到场景中 我遇到了同步问题 我的代码没有等待 XHR 请求完成 从而引发错误 以下示例显示了该问题 var loader new THREE OBJLoader return a me