V2EX 09月29日 15:38
Async与await在接口调用中的差异
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了在接口调用中使用async和await的区别,包括代码生成、性能和实际应用中的潜在问题。

get1 和 get2 接口的区别是一个加了 async 、await 一个没加的区别,加了 async 、await 会额外生成一些状态机相关的代码,除了这个区别还有其他区别吗?
我的理解是,如果不需要获取异步后的结果进行其他处理则可以不用加。如果不加 async 、await ,真到生产上会不会有什么问题?

示例代码:
using Microsoft.AspNetCore.Mvc;

namespace WebApplication1.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
[HttpGet("get1")]
public Task<Student> Get1Async()
{
return new TsetService().Get1Async();
}
[HttpGet("get2")]
public async Task<Student> Get2Async()
{
return await new TsetService().Get2Async();

}
}


public class TsetService
{

public Task<Student> Get1Async()
{
// 模拟数据库查询
Task.Delay(100);
return Task.FromResult(new Student { Id = 1, Name = "张三" });
}

public async Task<Student> Get2Async()
{
// 模拟数据库查询
await Task.Delay(100);
return new Student { Id = 1, Name = "张三" };
}
}

public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

async await 接口调用 代码生成 性能问题
相关文章