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

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日