emscripten-core/emscripten

Feature request: MAIN_THREAD_EM_ASYNC_JS

Open

#16.694 aperta il 11 apr 2022

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)C++ (3519 fork)batch import
good first bughelp wanted

Metriche repository

Star
 (27.361 star)
Metriche merge PR
 (Merge medio 19g 10h) (147 PR mergiate in 30 g)

Descrizione

EM_ASYNC_JS is really useful for writing async JS code with await, however it runs on the thread it was called on. It would be nice if there were a version that proxied the call to the main thread.

The alternative is to use MAIN_THREAD_ASYNC_EM_ASM (extra boilerplate with Asyncify.handleAsync and doesn't define a C function like EM_ASYNC_JS does):

MAIN_THREAD_ASYNC_EM_ASM({
    return Asyncify.handleAsync(async () => {
        // ....
    });
});

and then setting -s 'ASYNCIFY_IMPORTS=["emscripten_receive_on_main_thread_js"]'

related https://github.com/emscripten-core/emscripten/issues/8991#issuecomment-846440750

Guida contributor