我在应用程序启动时建立同步(与事件监听器),我需要停止它并再次运行。有一个.cancel()函数可以工作,但我如何重新启动同步?
我试图在cancel()之后删除从sync()函数返回的对象并再次运行sync(),但它有时会引发警告" pouchdb-6.1.2.min.js:7 (节点)警告:检测到可能的EventEmitter内存泄漏。 11名听众补充道。使用emitter.setMaxListeners()来增加限制。"。当我得到它时,我的旧听众不会被cancel()删除。
如何正确停止并开始同步?
答案 0 :(得分:1)
我相信正确的方法如下:
function restartSync() {
sync.on('complete', () => {
sync = db.sync(remoteDb, {live: true});
});
sync.cancel();
}
只要您想重新启动同步,就调用以下函数:
<template>
<button
v-model="newCharacter"
class="new-character"
autofocus
autocomplete="off"
placeholder="Ajouter en favoris ?"
@keypress.enter="addCharacter"
>
</template>
<script>
import axios from 'axios';
export default {
name: 'FavoriteButton',
data() {
return {
characters: [],
page: 1,
pages: 1,
currentCharacter: {},
};
},
created() {
this.fetch();
},
methods: {
addCharacter() {
this.$store.commit('addCharacter', this.newCharacter);
this.newCharacter = '';
},
fetch() {
const params = {
page: this.page,
};
const url = 'https://rickandmortyapi.com/api/character';
return axios
.get(url, { params })
.then((res) => {
this.characters = res.data.results;
this.pages = res.data.info.pages;
console.log(res.data.info);
})
.catch(console.log);
},
async fetchOne(id) {
const result = await axios.get(
`https://rickandmortyapi.com/api/character/${id}/`,
);
this.currentCharacter = result.data;
console.log(this.currentCharacter);
},
},
};
</script>
来源:man