等待异步功能

时间:2019-04-27 16:45:25

标签: javascript asynchronous promise

我知道这是开发人员经常遇到的问题,但是我似乎找不到与我有相同问题的人。

我有一个正在创建的游戏,该游戏有很多工厂,被调用时会返回一个游戏对象,例如玩家。在游戏甚至开始之前,我需要确保所有需要的图像都已加载,我可以通过将.onload事件简单地转换为promise并将其放入带有await调用的异步函数中来做到这一点。但是,由于我组织游戏方式的变化,我将需要在创建游戏对象的工厂中处理图像加载。这是一个问题,因为现在游戏不知道何时加载所有图像。我以为我可以使这些工厂异步并在它们上await,它们将有一个等待等待的异步函数调用,但是我认为这是不可能的。如此抽象,这就是我想要的:

我有一个诺言 gotBanana ,一旦我得到香蕉,诺言就会解决。

这在名为 getBananas() 的异步函数中,该函数在循环中获得了很多香蕉,它等待 gotBanana 承诺解决每个循环迭代。

我想将其放在另一个(可能是异步的)函数中,但是我希望该函数等待 getBananas() 函数完成。

是否可以这样做?还是需要以其他方式处理这种情况?

1 个答案:

答案 0 :(得分:3)

也许您正在寻找Promise.all来并行解析所有promise,并在完成时返回promise。因此,您只需要映射所有资产(图像或其他资产)并等待它。