无法兑现承诺

时间:2019-08-09 16:36:55

标签: javascript vue.js

我正在尝试在我的应用程序中模拟api体验,因为数据存储在json文件中,并且不会有http服务器为该应用程序提供服务。

api.js文件中,我是这样的:

import libraries from '../store/data/data.json'

export { search }

const search = function (payload) {
  new Promise((resolve, reject)=>{
    resolve(payload)
  })
}

从Vuex动作中,我试图按如下方式调用api:

import * as api from '@/api'

export const actions = {
  async SEARCH_ITEM({commit}, payload) {
    await api.search(payload)
      .then(res=>{
        console.log(res)
      })
  }
}

但是出现以下错误:

  

未捕获(承诺)TypeError:无法读取Store.SEARCH_ITEM中未定义的属性“ then”

很可能我在api.js部分做错了。有人可以指引我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,除非您指定返回值,否则JavaScript函数将返回undefined。您的search函数正在创建一个Promise,但它没有返回该Promise。将return关键字添加到函数中,以便调用者可以使用Promise和已解析的值:

const search = function (payload) {
  return new Promise((resolve, reject)=>{
    resolve(payload)
  })
}