这里创建了一个根据接口去判断是否可以创建任务的函数,$fetch做了promise封装,为了避免多回调用了async,await做异步改同步;
import store from "@/store/index"import { $fetch, msgToken } from "@/api/request"const releaseTaskCheck = async () => {let flag = falseconst res = await $fetch("/api/checkTaskPay", "", {token: msgToken({id: store.state.user.userId,name: store.state.user.name})})const code = Number(res.data.code)switch (code) {case 100:console.log(res.data)if (res.data.msg) {uni.showToast({title: res.data.msg,icon: "none"});flag = true;}flag = true;breakcase 101:flag = falsebreakdefault:flag = falsebreak}console.log(flag, "---")return flag}export default releaseTaskCheck
这里的console打印的是期望的值
但这样调用会返回一个pending态的promise,在[[PromiseValue]]中才是所需要的值
console.log(releaseTaskCheck(), "====")

如何拿到这个[[PromiseValue]]的值呢?
有两种方式
第一种是
releaseTaskCheck().then(res=>{console.log(res)})第二种是再用async,await包裹一下,下边是示例 ```javascript const routerManager = debounce(async (url, …args) => { if (args.includes(‘releaseTaskCheck’)) {
const res = await releaseTaskCheck() if (res) return} }, 300)
export default routerManager ```
疑问
为什么这两个在后边呢?
async函数为立即返回一个promise,函数内部的微任务在异步队列里等待执行
如过像上边那样再用await等待这个函数则会得到正常的返回值,因为await后边跟的就是一个promise,如果不是则转换成一个立即执行resolve的promise
