<分区>
我正在用 JavaScript 学习 monad。 Promise 本身是 monad,并且是功能性处理异步副作用的正确方法。 es7新的播放器async/await怎么样,我们可以在JavaScript的函数式编程中使用它吗?我觉得它把定义明确的 promise monad 又回到了命令式的方式。或者有一种足够明智地使用 async/await 来使函数编程更容易的方法吗?
<分区>
我正在用 JavaScript 学习 monad。 Promise 本身是 monad,并且是功能性处理异步副作用的正确方法。 es7新的播放器async/await怎么样,我们可以在JavaScript的函数式编程中使用它吗?我觉得它把定义明确的 promise monad 又回到了命令式的方式。或者有一种足够明智地使用 async/await 来使函数编程更容易的方法吗?
最佳答案
您仍然可以用它编写函数式风格的异步代码。 async
/await
只不过是糖,就像 Haskell 中的 do
符号一样(尽管它仅限于 promises 而不是通用的 monad)。如果您正在使用 promises 编写代码并且觉得 async
/await
会简化它,那么请使用它。
请注意,promises 经常使用副作用(并且异步本身,由于处于时域中,可能算作一种效果),因此命令式风格通常不是错误的方法。毕竟,即使是函数式程序也会产生副作用。
关于javascript - async/await 在函数式编程 JavaScript 中没有位置吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38943302/
相关文章:
android - 如何在 Kotlin 中实现 java SAM 接口(interface)?
haskell - 计算表达式中运算符的数量 - 无法推断实例
haskell - 在 Haskell 中将 foldr 与 OR 混合(懒惰?)
javascript - 使用 jQuery 的动态 AJAX promise 链
javascript - Visual Studio 上的正则表达式错误?
javascript - 在 Twitter 时间轴嵌入上禁用媒体
javascript - requirejs - d3.sankey 不是函数