定义的async方法如下
async codeFilters(code, codeType) { let result = ""; //这里进行了一次异步请求的操作,把拿到的数据进行筛选过滤得到自己想要的东西 await this.getCodeData(codeType).then( data => { let res = data.find(item => { return item.itemCode == code; }); result = (res ? res.itemName : ""); }); //在这里return出去 return result; },
情况说明:
//现调用情况:调用后会返回一个Promise对象,只有在then里才能拿到返回的数据 //例: this.$publicUtils.codeFilters("10", "GGZT").then(res => { console.log(res); }); //现希望返回值不是Promise对象, 直接是我return回来的值。方便我去使用 let res = this.$publicUtils.codeFilters("10", "GGZT"); console.log(res) //这样的话我可以 把方法直接丢结构里去渲染 //例:{{ $publicUtils.codeFilters("10", "GGZT") }}
好人一生平安 ~
已解决
悬赏分:0
- 解决时间 2021-11-28 15:35
点赞 0反对 0举报 0
收藏 0
分享 0
回答4
最佳
-
这个救不了,本身就是异步代码,要么then,要么await promise。
不喜欢then就用await吧(当然,包含下面这句代码的函数前得加async):let res = await this.$publicUtils.codeFilters("10", "GGZT"); console.log(res)
支持 0 反对 0 举报2021-11-28 08:01
-
aync 的返回值一定是Promise
但是你可以用 await 直接拿到值:
let res = await this.$publicUtils.codeFilters("10", "GGZT");
支持 0 反对 0 举报2021-11-28 09:09
-
then()
用于返回Promise对象成功抛出的数据
await
用于等待Promise对象抛出数据,它只能在async函数中使用。
所以this.$publicUtils.codeFilters("10", "GGZT")本身就是一个Promise对象
你可以直接将其置于async函数中然后console.log(await this.$publicUtils.codeFilters("10", "GGZT"))
即可
支持 0 反对 0 举报2021-11-28 10:44