Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于承诺和观察值的控制流抽象_Javascript_Promise_Observer Pattern_Control Flow - Fatal编程技术网

Javascript 基于承诺和观察值的控制流抽象

Javascript 基于承诺和观察值的控制流抽象,javascript,promise,observer-pattern,control-flow,Javascript,Promise,Observer Pattern,Control Flow,我经常发现自己需要JavaScript中的特定控制流抽象,我想知道它是否已经有了名称和实现。这很像一个承诺,但也很像遵守一个价值观 基本上,它允许您“观察”一个值或一组值,明确区分未定义的值和未定义的值。暂时不考虑错误处理,它将有两种状态。在左侧状态下,集合中的值或其中一个值未定义。在正确状态下,将定义集合中的值或所有值 您可以为所有三种类型的转换注册回调。如果已经定义了该值,则会立即触发其中一个回调,就像承诺一样。但它也不同于承诺,因为价值可以改变任意次数 例如: watch([value1,

我经常发现自己需要JavaScript中的特定控制流抽象,我想知道它是否已经有了名称和实现。这很像一个承诺,但也很像遵守一个价值观

基本上,它允许您“观察”一个值或一组值,明确区分未定义的值和未定义的值。暂时不考虑错误处理,它将有两种状态。在左侧状态下,集合中的值或其中一个值未定义。在正确状态下,将定义集合中的值或所有值

您可以为所有三种类型的转换注册回调。如果已经定义了该值,则会立即触发其中一个回调,就像承诺一样。但它也不同于承诺,因为价值可以改变任意次数

例如:

watch([value1, value2, value3])
.onDefined(function (vals) {
    /* the values are now defined */
}
.onUndefined(function () {
    /* one or more of the values is now undefined */
})
.onChange(function (vals, oldVals) {
    /* the values are defined, and one of them just changed */
});
区分OnDefine和onChange可能没有用。我不确定


这个或者类似的东西已经存在了吗?我很高兴被推荐到JavaScript库、网站、研究论文等。

欢迎来到一个美妙的学习体验,它的价值发生了变化,任何次数的东西都是一个信号。不过,我不确定代表一组值的信号。我不明白为什么观察者不能完成这项工作:到底是什么触发了单个值的转换?集合本身是可变的,即您可以任意添加/删除插槽吗?你在哪里使用这种模式?你说你经常需要它吗?@BenjaminGruenbaum:谢谢。我一定要去看看!