私はJavaScriptでモナドを学んでいます。 Promise自体はモナドであり、非同期の副作用を機能的に処理する正しい方法です。どうやらes7の新しいプレーヤーasync/awaitは、JavaScriptの関数型プログラミングで使用できますか?私はそれが必然的な方法に戻って約束されたモナドをよく定義しているように感じる。あるいは、関数のプログラミングをさらに容易にするために、非同期/賢明に十分に待機する方法がありますか?関数型プログラミングでasync/awaitが存在しませんJavaScript
1
A
答えて
2
まだ非同期コードを関数スタイルで書くことができます。 async
/await
は、砂糖以外のもので、do
のように表示されます(ただし、約束事に限定され、一般的なモナドではありません)。約束したコードを書いていて、async
/await
がそれを単純化すると感じたら、それを使用してください。
約束はしばしば副作用を使用していることに注意してください(また、時間軸にあることによって非同期自体が効果としてカウントされる可能性がある)ので、命令型スタイルはしばしば間違ったアプローチではありません。結局のところ、機能的なプログラムでさえも副作用が発生します。
関連する問題
- 1. 関数が存在しません - jQuery
- 2. JavaScriptの関数型プログラミング - イベント
- 3. プロパティプッシュが型に存在しません
- 4. JavaScriptの関数型プログラミング/パラメータ渡し
- 5. 関数型プログラミングの依存性注入
- 6. 非同期Javascript原因JSエラー関数が存在しません
- 7. 角型2 - エラー "プロパティ 'iconName'が型 'StateParams'に存在しません
- 8. Haskell関数が存在型を返す
- 9. エラー:関数levenshtein()が存在しません
- 10. エラー:関数avg(ブール値)が存在しません
- 11. エラー:関数plpython_call_handler()が存在しません(PostreSQL、python)
- 12. エラーコード:1305 MySQL、関数が存在しません
- 13. Route.php行のReflectionException:関数()が存在しません
- 14. 処理中 - "関数サブ(PVector、PVector)が存在しません"
- 15. C#Graphics.Drawline関数が機能していません、 "名前 'graphics'が現在のコンテキストに存在しません"
- 16. データベースエラー:関係は存在しません
- 17. Django:関係は存在しません
- 18. Python timeit関数がNameErrorでクラッシュする:グローバル名が存在しません
- 19. 角2:関数ではありませんが存在します
- 20. プロパティがJQueryStatic型に存在しません
- 21. XMLHttpRequestが型ウィンドウに存在しません
- 22. プロパティ 'map'が型オブジェクトに存在しません
- 23. @ angular/forms FormBuilder popsプロパティが型に存在しません
- 24. エラーTS2339: '_ws'プロパティが 'void'型に存在しません
- 25. myworkout:プロパティが型に存在しません
- 26. オブジェクト型からマッピングが存在しません。システムウィンドウのフォーム
- 27. TypeScript '...'が型 'typeof ...'に存在しません。
- 28. エラーTS2339:プロパティ 'modal'が型 'JQuery'に存在しません
- 29. Expression.Callメソッド 'Select'が型System.Collections.Generic.ICollectionに存在しません。
- 30. Angular2 - プロパティがhttp.getの 'Object []'型に存在しません
私はそれがほとんどの人が求めるものだと思います。彼らは、同期のように非同期コードを書きたい。彼らは実際に命令的なコーディングスタイルを意味すると言っています。私は同意する、約束はすばらしいし、現在彼らは機能的に求めるものを与えるが、人々はまだそれらを完全に活用することはできない。彼らは連鎖するのではなく、お互いに約束を入れ子にするようなことをする。だから、現時点では、これらのコルーチンはこの同期問題を解決しており、おそらくコルーチンは非同期に置き換えられて待っています。はい、私は非同期とは思っていませんし、機能的なJSに関する将来の飛躍を紹介しています。 – Redu
私はasync/awaitがもっと命令的なコードを書くよう促すかもしれないと感じます。 – Ron
Promiseは自動的に平坦化されるので、Monadではありません。Promise.resolve(Promise.resolve(3))は、約束の約束ではなく、intの約束です。しかし、モナドへの良い玄関口。 –