【问题标题】:Why method in in mixin returns object Promise? [duplicate]为什么mixin中的方法返回对象Promise? [复制]
【发布时间】:2022-01-12 06:01:49
【问题描述】:

在 vuejs3 应用中我想使用 common 方法,所以我把它放到 mixin resources/js/appMixin.js 中:

export default {

    methods: {

        async getBlockPage(page_slug) {
            const response = await axios.post('/get_block_page', {slug: this.page_slug})
            console.log('response.data.page::')
            console.log(response.data.page) // In the browser console I see this valid page object returned


            return response.data.page;

        }, // getBlockPage() {

但是在 vue 文件中调用这个方法:

mounted() {
    this.about= this.getBlockPage("about");
    console.log('AFTER this.about::') // I DO NOT this output
    console.log(this.about)
},

并输出关于我看到的 var

"[object Promise]"

哪种方式有效?

那个问题似乎有点具体,然后提供了链接,因为方法在 mixin 内部...

提前致谢!

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    是的,getBlockPage 是一个异步函数,总是返回 Promise。

    async mounted() {
      this.about= await this.getBlockPage("about");
      console.log(this.about)
    },
    

    mounted(){
      this.getBlockPage("about")
        .then(result => {
           console.log(result);
        )
        .catch(error => {
          //error handler
        });
    }
    

    您可以在这里了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

    Async / await 只是在你的函数上定义 Promise 行为的语法糖

    【讨论】:

    • 定义挂载为异步?你能解释一下吗?
    • 这只是一个记录正确 this.about 值的例子。你也可以使用经典的 Promise then / catch。
    • 能否请您提供经典 Promise then / catch 示例的链接?
    • 我已经编辑了主要回复​​
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2018-06-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多