Каковы ограничения асинхронности в браузере?
При использовании async
в браузере вы не можете использовать Async.RunSynchronously
. Я думаю, что это ограничение, потому что JavaScript является однопоточным.
Каковы ограничения обещаний на сервере (например, ядро dotnet)
Вы не можете использовать promise
на сервере, потому что .Net или .NetCore не знают этого вычисления. При работе с асинхронным кодом на сервере .Net или .NetCore необходимо использовать async
.
Если на сервере используется Node.js
то же ограничение, что и в браузере.
Могу ли я легко переключаться между двумя? (например, чтобы обернуть API выборки)
API выборки уже был упакован с использованием обещания в Fable.Fetch и Fable.Promise.
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
.
Что идиоматично для Fable?
Лично я использую promise
только потому, что сейчас это встроенная функция JavaScript, и в целом библиотека JavaScript ожидает, что вы будете работать с promise
, даже если вы можете перемещаться между promise
и async
.