Javascript 无法解决承诺

Javascript 无法解决承诺,javascript,vue.js,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) }) } 通过Vue

我试图在我的应用程序中模拟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\u项中未定义的属性“then”


很可能我把
api.js
部分做错了。有人能告诉我正确的方向吗?

默认情况下,除非指定返回值,否则JavaScript函数将返回未定义的
。您的
search
函数正在创建一个承诺,但它不会返回该承诺。将
return
关键字添加到函数中,以便调用方可以使用承诺和解析值:

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

您是否在
搜索
功能中缺少
返回
关键字?需要返还承诺。@Mike'Pomax'Kamermans它已经出口了。我只是没有在代码中添加它。它是在后台自动导出的。@Wrokar,这个
resolve()
不应该实际返回结果吗?函数需要返回承诺,否则就没有什么可添加的
。然后
。catch
。(注意,在你的
之后,你缺少了一个
.catch(e=>…)
。然后(res=>…)
,这是一个永远不要忘记的好主意)该死!你是对的。只是错过了那部分。