如何在不使用异步/等待的情况下编写函数?

时间:2018-06-25 20:30:54

标签: express vue.js async-await

我具有以下功能:https://github.com/anaida07/MEVN-boilerplate/blob/master/client/src/components/EditPost.vue

methods: {
  async getPost () {
    const response = await PostsService.getPost({
      id: this.$route.params.id
    })
    this.title = response.data.title
    this.description = response.data.description
  // this.$router.push({ name: 'Posts' })
},

我正在了解MEVN。我想知道是否仍然可以在不使用异步/等待的情况下编写相同的函数。我目前提出了以下建议:

methods: {
  getPost () {
    const response = PostsService
    .getPost({
      id: this.$route.params.id
    })
    this.title = response.data.title
    this.description = response.data.description

   //this.$router.push({ name: 'Posts' })
},

但是我的控制台日志中出现错误,提示:挂接的钩子中出现错误:“ TypeError:response.data未定义”。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

PostsService似乎扩展了axios,因此您可以将其用作承诺:

methods: {
  getPost () {
    PostsService
      .getPost({
        id: this.$route.params.id
      })
      .then(({data}) => {
        this.title = data.title
        this.description = data.description
        this.$router.push({ name: 'Posts' })
      }

},

发生错误的原因是response = PostsService.getPosts()实际上没有用数据填充响应变量。它必须先运行查询,然后才能在.then()

的回调中访问它