當服務器重新啓動時,Meteor會自動刷新所有連接客戶端的所有選項卡。我需要控制該功能,以便更慢地刷新並注意發生了什麼。重新啓動應用程序時的流星自動刷新
我在livedata軟件包的源代碼中找到了代碼,但有沒有一些方法可以在不破解核心軟件包的情況下對其進行控制。
當服務器重新啓動時,Meteor會自動刷新所有連接客戶端的所有選項卡。我需要控制該功能,以便更慢地刷新並注意發生了什麼。重新啓動應用程序時的流星自動刷新
我在livedata軟件包的源代碼中找到了代碼,但有沒有一些方法可以在不破解核心軟件包的情況下對其進行控制。
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。然後,一旦準備好再次遷移 ,它應該調用重試功能。重試功能將立即返回 ,但會將遷移安排爲重試,即 這意味着每個程序包將再次針對其遷移 數據進行輪詢。如果這一次他們都準備好了,那麼遷移就會發生。如果有遷移數據,則必須設置 名稱。
爲什麼?網頁的狀態保持不變,然後在刷新後恢復? – Swadq 2013-02-25 16:15:49
@Swadq各種用戶輸入字段不是,除非我做錯了什麼? – Harry 2013-02-25 16:19:46
確實,某些用戶輸入字段不是。也許最好是開發一個維護它們的包,而不是延遲更新? – Swadq 2013-02-25 18:05:59