在将其作为参数传递给另一个函数之前,如何等待异步创建的对象初始化?

时间:2018-07-26 21:06:19

标签: javascript object asynchronous box2d

背景

我正在使用p5.js生成基于浏览器的化学反应模拟。

代码使用box2d的JS端口处理模拟的物理过程(https://github.com/bobcgausa/cook-js)。

我编写了两个自定义类 ParticleCollection以对粒子块进行建模。通常,Collection是一组Particle对象。

加载模拟后,代码:

  1. 实例化Collection
  2. Collection每初始化一次Particle

加载粒子后,我首先使用p5.js中的loadImage()方法导入正确的精灵。创建图像对象后,我将其从b2库附加到物理物体上。

我必须异步创建b2对象,因为loadImage()使用了回调函数。

我的问题

要为实体建模,我需要将粒子连接在一起成为晶格。从理论上讲,我应该可以使用b2Joint来做到这一点。 (b2Joint是可用于连接对象的绳索的物理等效项。)

这些关节的构造函数采用四个参数:

var joint = new b2Joint("rope", body1, body2, {separation: distance})

但是,当我调用b2Joint构造函数时,body1body2 都不是(Particle对象上的存储属性)已定义。这会引发错误,并且晶格不会形成。

有没有办法让应用程序等到定义body1body2之后再尝试构造b2Joint

0 个答案:

没有答案