【发布时间】:2019-02-06 02:52:27
【问题描述】:
所以,我正在将我的第一个 vuejs 项目重写为 nuxtjs,并且我正在将所有 api 调用重写为存储操作,当我注意到我无法从它们返回值时,除非我拒绝它们。
无论我如何尝试返回一个值,return x 或 return Promise.resolve(x) 我的 promise 的结果总是未定义
我尝试了以下简单的操作:
async uselessWait(){
setTimeout(() => {
return ("success"); // and return Promise.resolve("success");
}, 1000)
}
当调用它时,结果总是undefined,尽管promise 正常解析
这是故意的,是错误还是只是我?
【问题讨论】:
-
为什么需要从 Vuex 动作中返回值?我不认为这是一个好习惯。为什么不改用 Vue 商店?
-
TBH 我不需要返回值,我只是觉得它更干净,例如通过返回发送 api 调用的成功消息,而不是编码存储值并在解析时让组件读取存储的值
-
如果您查看文档:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,事实证明您应该返回一个新的 Promise 实例,例如 new Promise((resolve, reject) => {}) 而不仅仅是 Promise.resolve ,你能试试这个吗?
-
@MátéWiszt 显然从一开始就设置
return new Promise()工作......但前提是我在调用任何异步函数之前这样做,这会使事情变得有点复杂。这也让我想知道为什么return Promise.reject("whatever")工作正常,而resolve("whatever")却不行
标签: vue.js promise async-await vuex nuxt.js