带有异步调用的Javascript地图函数链接

时间:2018-06-26 05:17:17

标签: javascript angular promise rxjs subscribe

我有以下代码:

WHERE

代码运行后myObj的期望值:

var myObj = [
  {
        "idArray": [
              "org.network#xyz1",
              "org.network#xyz2"
        ]
  },
  {
        "idArray": [
              "org.network#xyz3"
        ]
  }]



getTransferRequest = (id) => {
   let respObj;
   this._fetchTransferRequestData.getTransferRequest(id).subscribe(
     data => {
       respObj = data;
     },
     err => console.log(err),
     () => {
        return JSON.parse(respObj.message)
     });
}

myObj.map(obj => (
      obj["requestObjs"] = obj.idArray.map(transferId => this.getTransferRequest(transferId.split("#")[1]))
    ))

但是我得到的是myObj的值:

[
  {
        "idArray": [
              "org.network#xyz1",
              "org.network#xyz2"
        ],
        "requestObjs":[{"myid" : "xyz1"},{"myid" : "xyz2"}]
  },
  {
        "idArray": [
              "org.network#xyz3"
        ],
              "requestObjs":[{"myid" : "xyz3"}]
  }]

似乎,映射函数在getTransferRequest返回值之前执行。我在做什么错或需要添加哪些修改才能使其正常工作。 _fetchTransferRequestData.getTransferRequest调用一个api。 (要清楚,getTransferRequest包含使用rxJs的订阅函数的api调用,它是Angular 6代码。)

0 个答案:

没有答案