例如,有一个产生价值的函数(可能从服务中查询):
async function GetValue() as Task(of double)
await Task.Delay(1000)
return 16
end function
我想编写从值计算某事的函数(可能计算值的平方根)。
编写此函数的一种方法是
async function Calculate(D as double) as Task(of double)
await Task.Delay(1000)
return Math.Sqrt(D)
end function
将像
一样使用dim D = await GetValue
dim R = await Calculate(D)
编写此函数的另一种方法是
async function Calculate(T as Task(of double)) as Task(of double)
await Task.Delay(1000)
dim D = await T
return Math.Sqrt(D)
end function
将像
一样使用dim R = await Calculate(GetValue)
第二个变体将两个任务组合成一个任务以产生最终值。
将Task(Promise / Future)作为函数参数传递给构建任务组合是否被视为正常做法?
第二个变种是否有任何争论/情况?