1

私はJavaScriptでモナドを学んでいます。 Promise自体はモナドであり、非同期の副作用を機能的に処理する正しい方法です。どうやらes7の新しいプレーヤーasync/awaitは、JavaScriptの関数型プログラミングで使用できますか?私はそれが必然的な方法に戻って約束されたモナドをよく定義しているように感じる。あるいは、関数のプログラミングをさらに容易にするために、非同期/賢明に十分に待機する方法がありますか?関数型プログラミングでasync/awaitが存在しませんJavaScript

+0

私はそれがほとんどの人が求めるものだと思います。彼らは、同期のように非同期コードを書きたい。彼らは実際に命令的なコーディングスタイルを意味すると言っています。私は同意する、約束はすばらしいし、現在彼らは機能的に求めるものを与えるが、人々はまだそれらを完全に活用することはできない。彼らは連鎖するのではなく、お互いに約束を入れ子にするようなことをする。だから、現時点では、これらのコルーチンはこの同期問題を解決しており、おそらくコルーチンは非同期に置き換えられて待っています。はい、私は非同期とは思っていませんし、機能的なJSに関する将来の飛躍を紹介しています。 – Redu

+0

私はasync/awaitがもっと命令的なコードを書くよう促すかもしれないと感じます。 – Ron

+1

Promiseは自動的に平坦化されるので、Monadではありません。Promise.resolve(Promise.resolve(3))は、約束の約束ではなく、intの約束です。しかし、モナドへの良い玄関口。 –

答えて

2

まだ非同期コードを関数スタイルで書くことができます。 async/awaitは、砂糖以外のもので、doのように表示されます(ただし、約束事に限定され、一般的なモナドではありません)。約束したコードを書いていて、async/awaitがそれを単純化すると感じたら、それを使用してください。

約束はしばしば副作用を使用していることに注意してください(また、時間軸にあることによって非同期自体が効果としてカウントされる可能性がある)ので、命令型スタイルはしばしば間違ったアプローチではありません。結局のところ、機能的なプログラムでさえも副作用が発生します。

関連する問題