javascript 如何从Promise中获取数据?

老师们好, 老师们好我想把res.content.children.reduce后的数组通过return 返回出去. 通过测试总是返回的Promise对象, 不是我想要的数据,

目前我是通过全局变量进行接收的. 这种方法我感觉不好, 因此想请教老师们怎么弄比较好?

 async getUsersTree(type) {
            const res = await getOtgTree(type)
            if (res.content.children) {
                this.dataSourceList = res.content.children.reduce((arr, item) => [...arr, { label: item.orgName, value: item.id }], [])
            }
        },
阅读 3.1k
2 个回答
✓ 已被采纳
getUsersTree(type) {
  return new Promise(async resolve => {
    const res = await getOtgTree(type)
    if (res.content.children) {
        const dataSourceList = res.content.children.reduce((arr, item) => [...arr, { label: item.orgName, value: item.id }], [])
        resolve(dataSourceList)
    }
  })
}

理论上直接返回就可以了,因为你是 async函数,返回在await后面(第二种做法)。保险的做法是return Promise对象,也可以像第一种这样返回。

async getUsersTree(type) {
    const res = await getOtgTree(type)
    if (!res.content.children)
        return Promise.reject('没拿到数据')
    return Promise.resolve(
        res.content.children.reduce(
            (arr, item) => [...arr, { label: item.orgName, value: item.id }],
            []
        )
    )
    
}
const getUsersTree = async (type)=>{
    const res = await getOtgTree(type)
    if (res.content.children)
        return res.content.children.reduce(
        (arr, item) => [...arr, { label: item.orgName, value: item.id }],
        []
    )
}

async ()=>{
    this.dataSourceList = await getUsersTree(type)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题