Skip to content

JS版でのユーザー定義関数内wait/await #21

@zakki

Description

@zakki

現状はユーザー定義関数の実行が無限ループ内で行われるので動作が止まってしまいます。
具体的にはこういったコードで、ユーザー定義関数内で有効な操作があるまで画面更新を行わずawaitループを回すようなプログラムが動きません。
https://github.com/AmefuriTell/amayadori/blob/a5ff39165aac7b11b731e3dd37e5da49ecab1ab9/reversi/Reversi.hsp

解決案の一つとしてはasyncifyを使うと大きな変更なく上のようなプログラムも動くようになりました。
ただし、出力されるhsp3dish.jsのサイズが元の1.9Mから2.4MBに増えました。
これは、asyncifyを適用する関数をコンパイル時に指定すれば軽減できるそうです。
master...zakki:em-asyncify

他の対応として素直にはcode_callfunc()内で実行せずに親側で実行することも考えられますが、手を入れる必要のある個所が多そうです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions