Javascript 无法解决承诺
我试图在我的应用程序中模拟api体验,因为数据存储在json文件中,并且没有http服务器为应用程序提供服务 在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.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=>…)
,这是一个永远不要忘记的好主意)该死!你是对的。只是错过了那部分。