[英]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.