Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何取消订阅Firestore获取数据?_Javascript_Firebase_React Native_Google Cloud Firestore - Fatal编程技术网

Javascript 如何取消订阅Firestore获取数据?

Javascript 如何取消订阅Firestore获取数据?,javascript,firebase,react-native,google-cloud-firestore,Javascript,Firebase,React Native,Google Cloud Firestore,我想在组件卸载时取消订阅获取 我觉得是这样的: const snapshot = await db.collection(`users/user/messages`); 由于网速较慢,这可能需要一段时间,在抓取完成之前,组件可能会卸载 那么,当卸载组件时,如何在后台取消订阅或取消订阅?我假设您的代码实际上在行的末尾有一个.get()a,以便实际执行查询 不能取消返回承诺的Firestore操作(就像几乎所有返回承诺的API一样)。这一承诺最终将得到解决或拒绝。您不必对因此获得的任何数据进行任何

我想在组件卸载时取消订阅获取

我觉得是这样的:

const snapshot = await db.collection(`users/user/messages`);
由于网速较慢,这可能需要一段时间,在抓取完成之前,组件可能会卸载


那么,当卸载组件时,如何在后台取消订阅或取消订阅?

我假设您的代码实际上在行的末尾有一个
.get()
a,以便实际执行查询

不能取消返回承诺的Firestore操作(就像几乎所有返回承诺的API一样)。这一承诺最终将得到解决或拒绝。您不必对因此获得的任何数据进行任何处理,但SDK肯定会等待查询完成并获取所有数据


如果这会给你的应用程序带来问题,考虑通过对结果进行分页来获取较少的数据,并在它们即将变得可见时只加载文档。这需要做更多的工作,但它可能会为大型数据集节省时间和金钱。

我假设您的代码实际上在行的末尾有一个
.get()
a,以便实际执行查询

不能取消返回承诺的Firestore操作(就像几乎所有返回承诺的API一样)。这一承诺最终将得到解决或拒绝。您不必对因此获得的任何数据进行任何处理,但SDK肯定会等待查询完成并获取所有数据


如果这会给你的应用程序带来问题,考虑通过对结果进行分页来获取较少的数据,并在它们即将变得可见时只加载文档。这需要做更多的工作,但可能会为大型数据集节省时间和金钱。

您可以在名为componentWillUnmount的react生命周期挂钩中取消订阅onSnapshot事件,此处是firebase detach listener的链接:谢谢,如果我使用
onSnapshot
而不是
get
可以获得相同的结果和性能吗?您可以在名为componentWillUnmount的react生命周期挂钩中取消订阅onSnapshot事件,这里是firebase detach listener的链接:谢谢,如果我使用
onSnapshot
而不是
get
我能得到相同的结果和性能吗?谢谢,如果我使用
onSnapshot
而不是
get
我能得到相同的结果和性能吗?它真的没有更快。它只会随着时间的推移不断地侦听更改,直到您手动删除侦听器为止。删除侦听器不会取消任何正在进行的文档传输。如果此行为不完全符合您的要求,则不要使用它。谢谢,如果我使用
onSnapshot
而不是
get
可以获得相同的结果和相同的性能吗?它不会更快。它只会随着时间的推移不断地侦听更改,直到您手动删除侦听器为止。删除侦听器不会取消任何正在进行的文档传输。如果这种行为不完全是你想要的,那么就不要使用它。