延迟在vue生命周期钩子中销毁

时间:2018-06-08 14:48:42

标签: vue.js vuejs2

在我的组件中,我有一个mounted挂钩,可以将一些数据作为异步请求获取:

mounted() {
  this.fetchData()
}

并在beforeDestroy上删除商店中的数据:

beforeDestroy(){
  this.destroyDataInStore()
}

只要mounted中的请求在组件开始拆除之前解析,这些工作就可以正常工作。

有什么方法可以推迟beforeDestroy 承诺在装载中解决了吗?

1 个答案:

答案 0 :(得分:1)

你可以存储承诺:

export default {
    data () {
        return {
            thePromise: null
        }
    },
    mounted () {
        this.thePromise = this.fetchData()
    },
    beforeDestroy () {
        this.thePromise.then(() => {
            this.destroyDataInStore()
        })
    }
}

但是为了确保一切正常,我会使用created挂钩而不是mounted挂钩:

export default {
    data () {
        return {
            thePromise: null
        }
    },
    created () {
        this.thePromise = this.fetchData()
    },
    beforeDestroy () {
        this.thePromise.then(() => {
            this.destroyDataInStore()
        })
    }
}