[英]How can an asynchronously loaded module get the latest value from a Bacon.js Bus?
我在AMD模塊中有一個Bacon.Bus
。
define( 'bus', [ 'bacon' ], function( Bacon ){
return new Bacon.Bus();
} );
其他模塊將值推送到總線上。
define( 'pusher', [ 'bus' ], function( bus ){
// ...
bus.push( value );
// ...
} );
而其他模塊則監聽值。
define( 'listener', [ 'bus' ], function( bus ){
bus.onValue( function( value ){
// Consume value
} );
} );
當前加載的所有模塊都將接收推送的值; 但是,之后加載的任何模塊都不會。
我嘗試創建一個Bacon.Property
來保存當前值。
define( 'bus', [ 'bacon' ], function( Bacon ){
var bus = new Bacon.Bus();
bus.current = bus.toProperty();
return bus;
} );
// The pusher is unchanged
define( 'listener', [ 'bus' ], function( bus ){
bus.current.onValue( function( value ){
// Consume value
} );
} );
但這仍然沒有解決問題。 是否將onValue
附加到bus
或bus.current
,事實發生后加載的模塊不會觸發。
我想念什么?
這實際上是同一個舊的懶惰問題: https : //github.com/baconjs/bacon.js/wiki/FAQ#why-isnt-my-property-updated
解決方法是,您可以向屬性中添加一個無操作訂閱者,以確保即使沒有實際訂閱者,也可以對其進行更新。 或者您可以使用https://github.com/baconjs/bacon.model
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.