九镑十七便士 2022-11-29 17:05 采纳率: 30.6%
浏览 22

promise异步请求返回数据问题

问题遇到的现象和发生背景

使用promise返回了一个数组,但是传入组件会报错,提示返回的数组是一个promise

用代码块功能插入代码,请勿粘贴截图

this.service.getDataDict(dataType)()为异步请求方法, options是这个方法返回的数据,我这里返回的是个数组,但是还报错说是要的数组而不是promise

<abc :options="selectOptions()"></abc>
selectOptions() {
      let selectOption = this.field.options.selectOption
      return selectOption.selectSource === 1 ? selectOption.options : this.getDictData(selectOption.dataDictionary)
},
async getDictData(dataType) {
        const data = await this.service.getDataDict(dataType)() ?? [];      
      return data?.map((t) => ({
        label: t.dataName,
        value: t.dataValue,
      })) ?? [];
    },

运行结果及报错内容

Invalid prop: type check failed for prop "options". Expected Array, got Promise

我想要达到的结果

不报错

  • 写回答

4条回答 默认 最新

  • 越来越好。 2022-11-29 17:37
    关注

    试试调整为这样

    
    selectOptions() {
          return new Promise((reslove,reject)=>{
            let selectOption = this.field.options.selectOption;
            let dataDictionary = this.getDictData(selectOption.dataDictionary);
            reslove(selectOption.selectSource === 1 ? selectOption.options : dataDictionary);
          });
        }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?