我 支持 使用 async await
这篇文章原来的 标题 是 《我 反对 使用 async await》,
但经过后来的一些研究, 发现 async await 是 良性 的, 所以 我把 标题 改成了 《我 支持 使用 async await》,
详情请看 《无阻塞 编程模型》 https://www.cnblogs.com/KSongKing/p/10287882.html 。
以下是 “反对” 的原文 。
我 反对 使用 C# 的 async await 。
我 强调一点, 程序员 应该对 程序 有 控制感 。
过度的 控制反转 会 削弱 程序员 对 程序 的 控制感 。
async await 经过 编译器 处理的 代码 和 程序员 写 的 代码 是 不一样的, 或者说, async await 的 执行过程 对 程序员 是 不确定 的 。
这使 程序员 极大的 丧失了 对 程序 的 控制感 。
有个问题, 有没有 async await 和 线程(线程池) 的 性能对比 测试报告 ?
Javascript 是 单线程 模型, 不能 Sleep(), 也不能 Wait(), 现在看起来, async await 好像把 Javascript 的 形态 当成了 进化 的 高级形态 。
或者说, async await 以 Javascript 单线程 模型 为 目标, 带领 C# 向 Javascript 进化 。
So ……
我提倡 用 t.Wait() 的 方式 调用 Async 方法, 比如 :
Task<T> t = FooAsync();
t.Wait();
简单明了 。
我 支持 使用 async await的更多相关文章
- C#Framework4.0支持异步async/await语法
由于用户使用的是XP系统,但是程序里异步都是通过async/await代码来实现的,然而async/await需要Framework4.5版本才可以,而XP系统最高只能支持到Framework4.0, ...
- 小程序如何支持使用 async/await
下载 regenerator-runtime npm i regenerator-runtime 如何使用 在小程序中,不认识 node_modules 文件夹,无法通过以下方法来直接找到包文件 im ...
- 小程序如何支持使用 async/await (构建npm版)
前言 小程序本身是不支持async/await语法的,但有些应用场景,我们使用async/await会使得代码更简洁,也更易于维护,用过都知道是有多爽的.既然小程序不支持,那我们可以借助 fackbo ...
- JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...
- 在Silverlight中使用async/await
现在 async/await 大行其道,确实,有了 async/await ,异步编程真是简单多了,个人觉得 async/await 的出现,给开发者还来的方便,绝不亚于当年 linq 的出现. 但要 ...
- angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...
- Async/Await是这样简化JavaScript代码的
译者按: 在Async/Await替代Promise的6个理由中,我们比较了两种不同的异步编程方法:Async/Await和Promise,这篇博客将通过示例代码介绍Async/Await是如何简化J ...
- 体验异步的终极解决方案-ES7的Async/Await
阅读本文前,期待您对promise和ES6(ECMA2015)有所了解,会更容易理解.本文以体验为主,不会深入说明,结尾有详细的文章引用. 第一个例子 Async/Await应该是目前最简单的异步方案 ...
- WCF透明代理类,动态调用,支持async/await
我们希望WCF客户端调用采用透明代理方式,不用添加服务引用,也不用Invoke的方式,通过ChannelFactory<>动态产生通道,实现服务接口进行调用,并且支持async/await ...
随机推荐
- 获得本机Ip地址
- AndroidSDK 自带定位工具 uiautomatorviewer
前言:uiautomatorviewer是androidSDK自带的定位工具 1.打开目录D:\Android\androidSDK\tools\bin 2.点击启动uiautomator,页面显示如 ...
- L252
How often have you heard the saying, "Stop and smell the roses?" Odds are, you've come acr ...
- 相册 垂直居中; 水平居中. 1)宽度 大于高度, 宽度 100%; 2) 高度 大于 宽度 , 高度100%; getimagesize , list --->line-height , text-align, vertical-align, max-height, max-width
一: 效果: 1) 黑色 部分是 相框. 2) 图片 要实现 水平居中, 垂直居中 3) 如果 宽度 大于 高度 ,那么 宽度 100% ,如图1 , 高度 自适应 ,同时不能超过黑色相框的 高度 ; ...
- 常见无线DOS攻击
记录下自己最近一段时间对无线渗透学习的笔记. 无线DOS就是无线拒绝服务攻击.主要包括以下几种攻击类型:Auth Dos攻击.Deauth Flood攻击.Disassociate攻击及RF干扰攻击等 ...
- vue安装流程
一.环境搭建 vue推荐开发环境: Node.js: javascript运行环境(runtime),不同系统直接运行各种编程语言 npm: Nodejs下的包管理器.由于国内使用npm会很慢,这 ...
- Redis过期策略(转)
1.设置过期时间 expire key time(以秒为单位)--这是最常用的方式 setex(String key, int seconds, String value)--字符串独有的方式 具体的 ...
- input标签(图像域和隐藏域)
图像域(图像提交按钮): <input type="image" name="..." src="imageurl" /> 隐 ...
- JetBrains PyCharm 专业版激活
激活码获取:http://idea.lanyus.com/ JetbrainsCrack-release-enc.jar下载:提取码为1391
- 重写ajax方法实现请求session过期时跳转登录页面
jQuery(function($){ var _ajax=$.ajax; // 备份jquery的ajax方法 $.ajax=function(opt){ var _success = opt &a ...