异步/等待返回未定义的值

时间:2018-11-16 11:10:29

标签: javascript typescript asynchronous async-await undefined

我正在寻找解决方案,但无法实现。

async processMAC(macs){
    let datos = [];
    for(let x in macs){
      await this.ipdataService.getMacsSaData(macs[x]).subscribe(data =>{ 
        datos.push(data)
      }
    )}
    return datos;   
  }


this.processMAC(macs).then(result => {//I want to work with result but it is undefined}

2 个答案:

答案 0 :(得分:0)

如果您使用的是承诺

async processMAC(macs){
    let datos = [];
    for(let x in macs){
       datos.push(await this.ipdataService.getMacsSaData(macs[x])
    )}
    return datos;   
}

或者如果您想并行执行getMacsSaData

function processMAC(macs){
    return Promise.all(macs.map(mac => this.ipdataService.getMacsSaData(mac))) 
}

答案 1 :(得分:0)

很奇怪,以为示例代码段中可能存在一些错误,不确定是否可以使用:

let macsSaData = await this.ipdataService.getMacsSaData(macs[x]);
macsSaData.subscribe(data => { 
    datos.push(data)
}

还可以在回调中放置一个断点,以查看是否已将正确的数据推入数组。