Ждать асинхронной функции - PullRequest
0 голосов
/ 27 апреля 2019

Я знаю, что это распространенная проблема, которую задают разработчики, но я не могу найти никого, кто имеет такую ​​же проблему, как я.

У меня есть игра, которую я создаю, в этой игре есть много фабрик, которые при вызове возвращают игровой объект, такой как игрок. Еще до того, как игра запустится, я должен убедиться, что все необходимые изображения загружены, я сделал это, просто преобразовав событие .onload в обещание и поместив его в асинхронную функцию с вызовом await. Однако из-за изменений в том, как я организовываю игру, мне нужно будет обрабатывать загрузку изображений на тех фабриках, которые создают игровые объекты. Это проблема, потому что теперь игра не знает, когда все изображения загружены. Я думал, что смогу сделать эти фабрики асинхронными, и await на них будет иметь вызов асинхронной функции, который также ожидается, но я не верю, что это возможно. Итак, абстрактно, вот что я хочу:

У меня есть обещание gotBanana, которое разрешается, как только я получу свой банан.

это в асинхронной функции с именем getBananas(), которая получает много бананов в цикле, она ожидает обещания gotBanana для разрешения каждой итерации цикла.

Я хочу поместить это в другую (возможно, асинхронную) функцию, но я хочу, чтобы эта функция ожидала завершения функции getBananas().

Возможно ли это сделать или мне нужно разрешить эту ситуацию по-другому?

1 Ответ

3 голосов
/ 27 апреля 2019

Возможно, вы ищете Promise.all , который разрешает все обещания параллельно и возвращает обещание, когда это будет сделано. Так что вам просто нужно отобразить все ваши активы (изображения или другие) и ждать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...