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