Привет. Все также делаю игровой портал.
Есть index.html в котором JS ядро портала.
В нем встроен через iframe другой index.html конкретной игры.
В игре подключен SDK портала.
В игровой логике вызывается метод SDK получения каких-либо данных.
SDK отправляет postMessage родительскому окну и возвращает игровой логике promise.
Как здесь адекватно заресолвить промис, когда придет сообщение с данными от родительского окна через postMessage?
Пока что на ум пришло только такое решение:
При создании объекта SDK идет подписка на window.addEventListener('message', ...), в момент вызова игровой логикой метода у SDK - сохраняется resolve промиса в массив с информацией о типе запрашиваемых данных.
И когда приходит сообщение от родительского окна - в массиве ищется элемент с таким типом запрашиваемых данных и вызывается resolve промиса.