gpt4 book ai didi

javascript - 是否可以减慢 Meteor 上的跟踪器刷新速度?

转载 作者:行者123 更新时间:2023-12-03 00:26:08 24 4
gpt4 key购买 nike

我有一个应用程序订阅了大量数据,但我并不真正需要实时加载它。是否可以让 Tracker 刷新数据的速度变慢,比如 5 秒?我正在使用 React 进行开发并使用 withTracker()。谢谢!

最佳答案

Can it be possible to make Tracker refresh data slower, say 5 seconds?

如果 react 性数据发生变化,跟踪器就会运行,因此跟踪器(ReactiveVar、ReactiveDict、Subscription)中保存的数据的每个变化都会导致重新运行。

... lot of data subscribed but I don’t really need it to be loaded in realtime.

那么您绝对应该删除订阅并通过 Meteor method 获取您的数据.

如果集合更新,发布会立即将数据发送给订阅者。如果你不依赖这个功能,基本上是对服务器和网络资源的浪费,如果你的应用程序要达到更高级别的用户,资源将成为一个大问题。

使用方法,如果连续多次调用它,您将产生一些数据开销,因为数据会再次从集合中发送(而发布仅发送增量),但您也可以更好地控制此行为。

请注意,默认情况下您会失去 react 性,但您可以将接收到的数据放入 ReactiveVar/ReactiveDict 中或创建仅限本地客户端的 Mongo.Collection

如果您想保留使用 Mongo.Collection 的好处,您只需将收到的文档插入新的本地集合中:

import { Mongo } from 'meteor/mongo'

const LocalCollection = new Mongo.Collection('myLocalData') // should have an own unique name or null

然后在 React 组件中调用您的方法(但不是 render 方法):

// call a Meteor.method, pass some arguments, if required
// and parse the resulting documents array.
Meteor.call('getMyDataFromMethod', {foo:'bar'}, (err, documents) => {
if (err) {
// handle err
} else {
documents.forEach(doc => {
// update existing docs if present
// or insert as new into local collection
if (LocalCollection.findOne(doc._id)) {
LocalCollection.update(doc._id, { $set: doc })
} else {
LocalCollection.insert(doc)
}
})
}
})

由于您的文档已包含 _id,因此在插入本地集合时,它们将保留 _id

请注意,您的服务器方法需要使用 find(...).fetch() 而不是游标返回获取的文档。

添加到本地集合后,您可以像在代码中一样使用它。

关于javascript - 是否可以减慢 Meteor 上的跟踪器刷新速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54080422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com