什么是*像*承诺但可以解决多次?
What is *like* a promise but can resolve mutliple times?
我正在寻找一种 pub/sub 机制,它的行为类似于承诺,但可以多次解析,并且行为类似于事件,除非您在通知发生后订阅,它会触发最新的值。
我知道 notify
,但 deferred.notify
是顺序敏感的,因此它的行为就像一个事件。例如:
d.notify('notify before'); // Not observed :(
d.promise.progress(function(data){ console.log(data) });
d.notify('notify after'); // Observed
setTimeout(function(){ d.notify('notify much later') }, 100); // Also Observed
fiddle: http://jsfiddle.net/foLhag3b/
我想要的通知系统非常适合 UI 组件,该组件应该更新以反映其背后数据的状态。在这些情况下,您不想关心数据是否已经到达,而是希望在数据到达时进行更新。
也许这与 Immediate mode UIs 相似,但有所不同,因为它是基于消息的。
据我所知,基于消息的 UI 更新的最新技术是使用承诺或回调进行初始化,然后还绑定更新事件:
myUIComponent.gotData(model.data);
model.onUpdate(myUIComponent.gotData); // doing two things is 2x teh workz :(
我不想两者都做。我认为任何人都不必这样做,用例很常见,可以抽象出来。
model.whenever(myUIComponent.gotData); // yay one intention === one line of code
我可以建立一个机制来做我想做的事,但我想看看是否已经存在这样的 pub/sub 机制。很多聪明人在 CS 方面做了很多工作,我认为这个概念一定存在,我只是在寻找它的名字。
需要说明的是,我不打算更改整个框架,例如 Angular 或 React。我只是在寻找 pub/sub 机制。最好是使用 notifr
或 lemme-kno
或 touch-base
.
等时髦名称的已知概念的实现
你会想看看 (functional) reactive programming。您正在寻找的概念在 FRP 中称为 Behavior 或 Signal。它模拟值随时间的变化,并且可以随时检查(连续保存一个值,与离散触发事件的流相反)。
var ui = state.map(render); // whenever state updates, so does ui with render() result
JS 中一些流行的库是 Bacon and Rx,但是它们使用自己的术语:您会发现 properties 和 observables.
我正在寻找一种 pub/sub 机制,它的行为类似于承诺,但可以多次解析,并且行为类似于事件,除非您在通知发生后订阅,它会触发最新的值。
我知道 notify
,但 deferred.notify
是顺序敏感的,因此它的行为就像一个事件。例如:
d.notify('notify before'); // Not observed :(
d.promise.progress(function(data){ console.log(data) });
d.notify('notify after'); // Observed
setTimeout(function(){ d.notify('notify much later') }, 100); // Also Observed
fiddle: http://jsfiddle.net/foLhag3b/
我想要的通知系统非常适合 UI 组件,该组件应该更新以反映其背后数据的状态。在这些情况下,您不想关心数据是否已经到达,而是希望在数据到达时进行更新。
也许这与 Immediate mode UIs 相似,但有所不同,因为它是基于消息的。
据我所知,基于消息的 UI 更新的最新技术是使用承诺或回调进行初始化,然后还绑定更新事件:
myUIComponent.gotData(model.data);
model.onUpdate(myUIComponent.gotData); // doing two things is 2x teh workz :(
我不想两者都做。我认为任何人都不必这样做,用例很常见,可以抽象出来。
model.whenever(myUIComponent.gotData); // yay one intention === one line of code
我可以建立一个机制来做我想做的事,但我想看看是否已经存在这样的 pub/sub 机制。很多聪明人在 CS 方面做了很多工作,我认为这个概念一定存在,我只是在寻找它的名字。
需要说明的是,我不打算更改整个框架,例如 Angular 或 React。我只是在寻找 pub/sub 机制。最好是使用 notifr
或 lemme-kno
或 touch-base
.
你会想看看 (functional) reactive programming。您正在寻找的概念在 FRP 中称为 Behavior 或 Signal。它模拟值随时间的变化,并且可以随时检查(连续保存一个值,与离散触发事件的流相反)。
var ui = state.map(render); // whenever state updates, so does ui with render() result
JS 中一些流行的库是 Bacon and Rx,但是它们使用自己的术语:您会发现 properties 和 observables.