【发布时间】:2020-04-15 18:12:37
【问题描述】:
以下先随机调用getParentCustomers或getAccountManagers。当它运行时,它工作正常。但是,无论哪个被调用,第二个都会将null 传递给它。这些方法都不会以任何方式改变传入的值。我猜想有一些关于这些的上下文被调用的原因是指向response.salesChannels 的原始指针在任务之间丢失了。
Map response = [
salesChannels: null,
accountManagers: null,
parentCustomers: null,
isrs: null,
operatingUnits: null,
businessUnits: null
]
def t1 = task {
response.salesChannels = salesChannelApiService.get(salesChannel)
def t1a = task {
response.parentCustomers = salesChannelTransformService.getParentCustomers(response.salesChannels)
}
def t1b = task {
response.accountManagers = salesChannelTransformService.getAccountManagers(response.salesChannels)
}
waitAll([t1a, t1b])
}
def t2 = task {
//... other stuff
}
def t3 = task {
//... other stuff
}
waitAll([t1, t2, t3])
return response
我什至尝试修改内部结构以利用 onComplete。
...
onComplete([task {
return salesChannelApiService.get(salesChannel)
}], { salesChannels ->
response.salesChannels = salesChannels
def t1a = task {
response.parentCustomers = salesChannelTransformService.getParentCustomers(salesChannels)
}
def t1b = task {
response.accountManagers = salesChannelTransformService.getAccountManagers(salesChannels)
}
waitAll([t1a, t1b])
})
...
但是,我仍然得到相同的结果。
注意:这也是随机的。有时它工作正常 - 将相同的列表传递给两种方法。但当它破裂时,总是先触发第二个。
对此有什么想法吗?
【问题讨论】:
标签: grails promise grails-3.2