我有以下代码:
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代码。)