簡體   English   中英

異步加載的模塊如何從Bacon.js總線獲取最新值?

[英]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附加到busbus.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM