簡體   English   中英

Meteor - 從客戶端取消服務器方法

[英]Meteor - Cancelling a Server Method from the Client

我正在通過服務器方法執行數據庫計數。 用戶可以選擇他們想要執行計數的方式,然后調用該方法。

我的問題是計數可能需要一些時間,並且用戶可能會在方法運行時改變主意並請求不同的計數。 我有什么方法可以取消調用的方法並運行新的計數嗎?

我以為this.unblock()可能會起作用; 它將允許運行一個新方法,但它不會取消舊方法。 我也考慮過預先計數,然后只使用查找,但選擇器組合太多了。

這是我的代碼,它很簡單:

//Server
Meteor.methods({
    getFilterCount: function(oFilterSelector) {
        return clMaBldgs.find(oFilterSelector, {}).count();
    }
});

//Client
Meteor.call('getFilterCount', oFilterSelector, function (error, result) {
    //do some stuff
});

無法從客戶端取消已對服務器進行的方法調用。

但是如果你的方法在短時間內被多次調用,你只關心最后一次調用的結果。 您可以使用去抖動延遲執行一段時間。 這有助於減少對服務器的不必要調用。

更多的解決方法,但如果您有一個反應變量(可能是數據庫中的條目),這是該方法的狀態,並且在方法本身中,您每次獲得該狀態時都會檢查該標記。

{
    _id: "some id for the method", running: true
}

方法的偽代碼

Meteor.methods({
    method: (_id) => {
        status = getStatusForId(_id);
        while(status) {
            status = getStatusForId(_id);
        }
    }
});

然后要停止它,你只需將該標志更新為false,該方法將盡快停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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