Js Deferred / Promise / Future по сравнению с функциональными языками, такими как Scala
Я в основном использую языки программирования, такие как Scala и JavaScript. Я пытаюсь понять сходства и различия в том, как асинхронное реактивное программирование используется на обоих языках. Вы можете мне помочь?
Я не принимаю какие-либо конкретные JsPromise
Framework, потому что, похоже, многие реализуют аналогичные спецификации (например, Promise / A). Я только использовал Q до сих пор.
Кажется, что в Javascript мы называемDeferred
объект, который мы решили завершитьPromise
, В Scala, кажется,Promise
это объект, который вы решили получитьFuture
монада.
Может кто-нибудь сказать мне, если это правильно? Есть ли веская причина для другого использования терминаPromise
между Джи и Скалой?
Кроме того, в Скала мы обычно цепочкиFuture
монады с дальнейшими вычислениями с использованием таких операторов, какmap
а такжеflatMap
(также называемыйbind
в Хаскеле). Что является эквивалентом этого в Js?
Я могу ошибаться, но мне кажется, что в Jsthen
наPromise
вид ручки какmap
а такжеflatMap
операторы верно? Если это так, возможно ли получитьpromise of promise of result
в Js? Как мы можем получитьFuture[Future[Result]]
в Scala (который может быть сведен кFuture[Result]
в любом случае).
Это JsPromise
монада? Это выглядит так, даже если имена методов не совпадают с теми, что мы встречаем в литературе по монадам.