专栏首页sringbootawait和async的机制

await和async的机制

await 一般会和 async 一起使用,async 是异步,await则是等待异步的返回值。可以看下面的测试

        public async Task<string> call()
        {
            Debug.WriteLine("----------->1");
            int s = await foo();
            Debug.WriteLine("----------->2");
            return "1";
        }
        public async Task<int> foo()
        {
            Debug.WriteLine("----------->3");
            await Task.Delay(500);
            Debug.WriteLine("----------->4");
            return 1;
        }

运行结果

----------->1
----------->3
----------->4
----------->2

这里在await 后的方法运行完之后,才会向下运行。

分开await ,程序调用,和返回值接受分开

        public async Task<string> call()
        {
            Debug.WriteLine("----------->1");
            Task<int> infoTask = foo();
            Debug.WriteLine("----------->2");
            int s = await infoTask;
            Debug.WriteLine("----------->3");
            return "1";
        }
        public async Task<int> foo()
        {
            Debug.WriteLine("----------->4");
            await Task.Delay(500);
            Debug.WriteLine("----------->5");
            return 1;
        }
        public async Task<string> call()
        {
            Debug.WriteLine("----------->1");
            Task<int> infoTask = foo();
            Debug.WriteLine("----------->2");
            int s = await infoTask;
            Debug.WriteLine("----------->3");
            return "1";
        }
        public async Task<int> foo()
        {
            Debug.WriteLine("----------->4");
            await Task.Delay(500);
            Debug.WriteLine("----------->5");
            return 1;
        }

运行结果

----------->1
----------->4
----------->2
----------->5
----------->3

当await 会使程序阻塞,等待程序的返回值,异步的程序返回值获取后,才会向下运行。

参考这篇文章

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 风险控制

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • Java web拦截恶意请求

    RequestHolder是获取每次请求的HttpServletRequest对象的工具类。

    多凡
  • ASP.NET 项目结构基本分层设计

    本次项目设计是关于用户查询和注册功能的代码结构设计,下面就是用到的项目分层uml图。

    多凡
  • 人工智能,P2P和区块链将如何改变保险产业

    就像金融科技正在改变银行产业一样,“保险科技”也正在颠覆保险产业。 比如Trov公司,提供定制化保险产品,可以让消费者对被保险物品进行分类。BuzzmoveS...

    点滴科技资讯
  • Spring使用 --- 基本概念(二):AOP,面向方面编程

    用户2176428
  • 8个应用案例告诉你,机器学习都能做什么?

    导读:预测学习是当今机器学习的主要任务。本文中,我们将介绍两个主要的预测学习问题:回归和分类。它们适用于很多场景和数据类型。此外,精心设计的特征对回归和分类方案...

    华章科技
  • 一条数据狗的上海房价研究

    年初上海的房价一夜沸腾,到处都是月上涨百万的房子和日跳价十万的交易,以及人满为患的房地产交易中心。上月某日我打开滴滴快车,刚输入虹口,居然发现自动补出“虹口区房...

    华章科技
  • Windows服务器安全加固10条建议

    上节我们介绍了“Linux安全加固10条建议”本节我们继续看Windows服务器安全加过10条建议。

    研究僧
  • json-web-token(JWT)

    JWT的全称为json web token。不要把它想得多么高深,其实就是一种生成token的方式。一般我们访问一个系统的流程就是:请求登录接口,该接口会返回一...

    贪挽懒月
  • 批量删除WP的垃圾评论

    用户1272546

扫码关注云+社区

领取腾讯云代金券