异步Web API方法返回什么?

Mat*_*t W 0 c# async-await asp.net-web-api

具有以下签名的Web API方法实际返回了什么?

    [HttpPost]
    public async Task<IHttpActionResult> Post([FromBody] ReviewViewModel review)
    {
        using (var context = new BooksContext())
        {
            var book = await context.Books.FirstOrDefaultAsync(b => b.Id == review.BookId);
            if (book == null)
            {
                return NotFound();
            }

            var newReview = context.Reviews.Add(new Review
            {
                BookId = book.Id,
                Description = review.Description,
                Rating = review.Rating
            });

            await context.SaveChangesAsync();
            return Ok(new ReviewViewModel(newReview));
        }
    }
Run Code Online (Sandbox Code Playgroud)

方法取自:http://www.developerhandbook.com/c-sharp/create-restful-api-authentication-using-web-api-jwt/

我在考虑它是:

1)在.IsCompleted为真之前,框架不会向调用客户端返回响应,或者2)框架确实返回到客户端,但客户端必须优雅地处理这种情况,或者3)完全没有其他东西.

SLa*_*aks 5

async 动作是一个实现细节.

框架将等待Task解决; 客户不会发现任何差异.