香草JavaScript中的Elm信号?

香草JavaScript中的Elm信号?,javascript,signals,elm,Javascript,Signals,Elm,我知道在vanilla JS中实现信号/观测值/流是可能的,因为Elm编译回JS 有人能把一个信号的例子翻译成JS吗?它必须使用回调结构,对吗?例如,Elm将此转换为什么 main = Signal.map show Mouse.position 您输入的简单代码不会转换为JS中的简单回调结构。Elm运行时比这稍微复杂一点。然而,如果你真的想得到更好的理解,你可以看看 以一种非常粗糙的方式,你可以将其视为等同于: document.onmousemove = handle

我知道在vanilla JS中实现信号/观测值/流是可能的,因为Elm编译回JS

有人能把一个信号的例子翻译成JS吗?它必须使用回调结构,对吗?例如,Elm将此转换为什么

    main =
       Signal.map show Mouse.position

您输入的简单代码不会转换为JS中的简单回调结构。Elm运行时比这稍微复杂一点。然而,如果你真的想得到更好的理解,你可以看看

以一种非常粗糙的方式,你可以将其视为等同于:

document.onmousemove = handleMouseMove;

function handleMouseMove(event) {
    //...extract x and y from event somehow
    show([x, y])
}

但是在Elm中发生的事情更多,它与RXjs中的可观测对象更为相似

嘿,塞巴斯蒂安,谢谢你的回答。我的问题实际上更一般——这些反应性结构(信号、可观测数据、流等)在vanilla JS中是如何处理的?它们的核心JavaScript是什么?我觉得我所看到的任何描述中都缺少了这一点,它们就像魔术一样。你的问题太广泛了,无法在StackOverflow上简洁地回答。我认为塞巴斯蒂安给出了关于如何推理Elm的最佳答案,但如果你真的想理解Elm运行时,那么这是创造者埃文·查普利斯基为他的论文所写的论文,这是否意味着没有简单的反应结构的心智模型,如信号、可观察物、流,用纯JavaScript做什么?这些结构都是内在复杂的,缺乏类似物吗?换句话说,看看您链接到的本机实现,这段代码的哪些部分是使信号骨架成为可能的绝对必要的位?这是基本的可观察模式。信号是随时间变化的值。这意味着您需要维护一个观察者列表,并在值更改时通知他们。也许这会有帮助: