通过将嵌套的任务作为函数参数传递来组成任务

时间:2016-05-21 08:57:35

标签: .net vb.net function asynchronous async-await

例如,有一个产生价值的函数(可能从服务中查询):

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)

第二个变体将两个任务组合成一个任务以产生最终值。

  1. 将Task(Promise / Future)作为函数参数传递给构建任务组合是否被视为正常做法?

  2. 第二个变种是否有任何争论/情况?

0 个答案:

没有答案