我有两种相似的方法,但是,在对此进行理论分析之后,我很确定它们在执行上是不同的。
方法一:
var renderDocumentDirective = await
RenderDocumentBuilder.Instance.GetRenderDocumentDirectiveAsync(previousPage, session);
return await ResponseClient.Instance.BuildAlexaResponse(new Response()
{
shouldEndSession = null,
directives = new List<IDirective>()
{
renderDocumentDirective
}
}, session.alexaSessionDisplayType);
方法二
var renderDocumentDirective = RenderDocumentBuilder.Instance.GetRenderDocumentDirectiveAsync(previousPage, session);
return await ResponseClient.Instance.BuildAlexaResponse(new Response()
{
shouldEndSession = null,
directives = new List<IDirective>()
{
await renderDocumentDirective
}
}, session.alexaSessionDisplayType);
第一种方法在异步任务 中使用 await 运算符RenderDocumentBuilder
,然后在 中使用它ResponseClient
,这也是异步任务。
然而,第二种方法设置了 Task RenderDocumentBuilder
,但直到它在内部时才调用等待的方法ResponseClient
,在执行的这一点上,它正在等待返回数据。
执行此方法的两种方式都有效,但我不清楚它是否适合:
等待 ResponseClient 之外的任务?(方法一)
或者,在 ResponseClient 之外创建 renderDocumentDirective 任务并在方法内等待它是否合适?(方法二)