PouchDB同步取消并重启

时间:2017-04-06 19:58:30

标签: pouchdb

我在应用程序启动时建立同步(与事件监听器),我需要停止它并再次运行。有一个.cancel()函数可以工作,但我如何重新启动同步?

我试图在cancel()之后删除从sync()函数返回的对象并再次运行sync(),但它有时会引发警告" pouchdb-6.1.2.min.js:7 (节点)警告:检测到可能的EventEmitter内存泄漏。 11名听众补充道。使用emitter.setMaxListeners()来增加限制。"。当我得到它时,我的旧听众不会被cancel()删除。

如何正确停止并开始同步?

1 个答案:

答案 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