問題タブ [scotty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Scotty サーバーで新しいスレッドをフォークする
Scotty で 2 つの API を使用して Web サーバーのプロトタイプを作成しています。
/add/:id
指定された ID で非同期タスクを開始します。/cancel/:id
指定された ID のタスクを強制終了します。
基本的に、クライアントはいくつかの Id を提供することで非同期タスクを開始し、ID によって現在のタスクを強制終了することもできます。
Control.Concurrent.forkIO
スレッドを開始するために使用し、 Map: である Scotty グローバル状態に保存した をforkIO
返します。ThreadId
type AppState = Map TaskId ThreadId
/add/:id
すぐには戻りませんが、タスクが完了するのを待って、結果をクライアントに返します。
forkIO
私の問題はとの混合MonadIO m => ActionT Text m ()
です。渡したアクションtext :: Text -> ActionT Text m ()
の完了後に呼び出せるようにする必要があります。IO ()
forkIO
これは明らかMonadIO m
にIO
エラーですが、頭を悩ませて解決策を見つけることができません。
これは完全な例です: