F#提供了两个用于基于回调的代码的计算表达式:async
和promise
。
async
更像是idomatic F#,但我不清楚它在浏览器中的运行情况如何。理想情况下,我将可以在任何地方使用async
,因为这可以使我在客户端和服务器之间实现更多的代码重用。
async
的局限性是什么? promise
在服务器(例如dotnet核心)上有哪些限制fetch
API)注意:除了浏览器API外,我不需要与任何JavaScript互操作。
答案 0 :(得分:1)
浏览器中异步的局限性是什么?
在浏览器中使用async
时,不能使用Async.RunSynchronously
。我认为这是一个限制,因为JavaScript是单线程的。
服务器(例如dotnet核心)上的promise有什么限制
您不能在服务器上使用promise
,因为.Net或.NetCore不知道此计算。在.Net或.NetCore服务器上使用异步代码时,您需要使用async
。
如果服务器使用的是Node.js
,则该限制与浏览器中的限制相同。
我可以轻松地在两者之间切换吗? (例如包装提取API)
fetch.Fetch和Fable.Promise中已经使用promise封装了fetch API。
promise {
let! res = fetch "http://fable.io" []
let! txt = res.text()
// Access your resource here
Browser.console.log txt
}
也可以通过打开Fable.Core
来访问Async.AwaitPromise
和Async.StartAsPromise
。
寓言的惯用语是什么?
我个人使用promise
只是因为它现在是JavaScript的本机功能,并且一般而言,即使您可以在promise
和{之间移动,JavaScript库也希望您使用promise
进行工作。 {1}}。