2013-02-24 145 views
4

當服務器重新啓動時,Meteor會自動刷新所有連接客戶端的所有選項卡。我需要控制該功能,以便更慢地刷新並注意發生了什麼。重新啓動應用程序時的流星自動刷新

我在livedata軟件包的源代碼中找到了代碼,但有沒有一些方法可以在不破解核心軟件包的情況下對其進行控制。

+0

爲什麼?網頁的狀態保持不變,然後在刷新後恢復? – Swadq 2013-02-25 16:15:49

+0

@Swadq各種用戶輸入字段不是,除非我做錯了什麼? – Harry 2013-02-25 16:19:46

+0

確實,某些用戶輸入字段不是。也許最好是開發一個維護它們的包,而不是延遲更新? – Swadq 2013-02-25 18:05:59

回答

2

package/reload/reload.js中有一個私有API來執行此操作。由於API是私人它可能會改變,但在這裏是如何工作的:

例子:

if (Meteor.isClient) { 

    var firstTime = true; 

    function onMigrate (retry) { 
    if (firstTime) { 
     console.log("retrying migration in 3 seconds"); 
     firstTime = false; 
     Meteor.setTimeout(function() { 
     retry(); 
     }, 3000); 
     return false; 
    } else { 
     return [true]; 
    } 
    } 

    Meteor._reload.onMigrate("someName", onMigrate); 

    // or Meteor._reload.onMigrate(onMigrate); 

} 

從評論中packages/reload/reload.js

支持遷移應該通過調用註冊自己的軟件包 這個功能。當需要遷移的時候,回調函數將被調用 一個參數,即「重試函數」。如果程序包已準備好遷移到 ,則應返回[true,data],其中數據是其遷移 數據,任意JSON值(如果此時沒有遷移數據 ,則爲[true])。如果在準備好遷移 之前該軟件包需要更多時間,則它應該返回false。然後,一旦準備好再次遷移 ,它應該調用重試功能。重試功能將立即返回 ,但會將遷移安排爲重試,即 這意味着每個程序包將再次針對其遷移 數據進行輪詢。如果這一次他們都準備好了,那麼遷移就會發生。如果有遷移數據,則必須設置 名稱。