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