1

我有以下 WebAPI 操作,想知道直接返回Task<bool>和返回_store.ContainerExistsAsync(container)是否更好;

我问是因为,如果我正确理解 async/await,编译器会在 await 处创建一个状态机以返回相同的状态。直接返回任务而不必在操作中等待它,理论上会更快吗?

    public async Task<HttpResponseMessage> GetContainer(string container)
    {
        if (container.Length < 3 ||
            container.Length > 63 ||
            !Regex.IsMatch(container, @"^[a-z0-9]+(-[a-z0-9]+)*$"))
            return Request.CreateResponse(HttpStatusCode.BadRequest, new { errors = new string[1] { "Container Name is not alowed." } })            

        return Request.CreateResponse<bool>(HttpStatusCode.OK, await _store.ContainerExistsAsync(container));

    }
4

1 回答 1

1

是的,如果您可以async在没有and的情况下实现异步方法await,那么继续;async/await将增加开销。

这在方法的最后一行只有唯一await并且看起来像return await ...;

在您的特定示例中,我不确定这是否会起作用,因为该方法在await.

让它直接返回Task<bool>from很容易ContainerExistsAsync,但错误处理也需要更改。如果抛出 aHttpResponseException足够好,那么是的,您将能够在不使用async.

于 2013-09-16T02:11:40.997 回答