20

Webワーカーで新しいメッセージを同期的に待機またはチェックする方法はありますか?

コールバックをリファクタリングできない複雑なコード本体 (emscripten からコンパイルされた LLVM) があります。

UI スレッドからメッセージを受信して​​処理するまで、特定の行の後のコードが実行されないようにする必要があります。while ループでブロックすると、イベント ループが実行されないため、メッセージを受信できません。

4

5 に答える 5

1

いいえ、残念ながら。親ページからのメッセージをブロックする方法を追加することについていくつかの議論がありましたが、どこにも行きませんでした. 関連するメーリング リストのスレッドを掘り下げることができるかどうかを確認します。

于 2013-05-15T17:41:43.290 に答える
1

リファクタリングせずに次のようにシーケンスを壊すことはできますか?

wrk.onmessage = function(e) {
    if (e.data.step === 'initial input') {
        doInitialWork(e.data.inputs)
    } else if (e.data.step === 'ui input') {
        doTheRest(e.data.uiData)
    }
}

onmessage イベントは、最初のステップの実行スタックが完了するまでブロックされ、重要な ui ビットは、情報が利用可能な場合にのみ起動されます。

于 2015-02-07T15:31:15.363 に答える