永发信息网

如何在VS2010中使用Async功能

答案:2  悬赏:20  手机版
解决时间 2021-02-06 16:45
如何在VS2010中使用Async功能
最佳答案
1)必须把你的VS2010更新到SP1
  2)必须下载安装程序:
  3)删除以下补丁(到控制面板自己搜):KB2635973, KB2615527, KB2645410
  4)“开始”=>“文档”中找到“示例代码Sample”文件夹,然后在VS中引用“AsyncCtpLibrary.dll”即可啦!以后即便打上这些补丁,貌似还是可以正常工作滴!
全部回答
javascript 中最蛋疼的事情莫过于回调函数嵌套问题。以往在浏览器中,因为与服务器通讯是一种比较昂贵的操作,因此比较复杂的业务逻辑往往都放在服务器端,前端 javascript 只需要少数几次 ajax 请求就可拿到全部数据。 但是到了 webapp 风行的时代,前端业务逻辑越来越复杂,往往几个 ajax 请求之间互有依赖,有些请求依赖前面请求的数据,有些请求需要并行进行。还有在类似 node.js 的后端 javascript 环境中,因为需要进行大量 io 操作,问题更加明显。这个时候使用回调函数来组织代码往往会导致代码难以阅读。 现在比较流行的解决这个问题的方法是使用 promise,可以将嵌套的回调函数展平。但是写代码和阅读依然有额外的负担。 另外一个方案是使用 es6 中新增的 generator,因为 generator 的本质是可以将一个函数执行暂停,并保存上下文,再次调用时恢复当时的状态。co 模块是个不错的封装。但是这样略微有些滥用 generator 特性的感觉。 es7 中有了更加标准的解决方案,新增了 async/await 两个关键词。async 可以声明一个异步函数,此函数需要返回一个 promise 对象。await 可以等待一个 promise 对象 resolve,并拿到结果。 比如下面的例子,以往我们无法在 javascript 中使用常见的 sleep 函数,只能使用 settimeout 来注册一个回调函数,在指定的时间之后再执行。有了 async/await 之后,我们就可以这样实现了: async function sleep(timeout) { return new promise((resolve, reject) => { settimeout(function() { resolve(); }, timeout); }); } (async function() { console.log('do some thing, ' + new date()); await sleep(3000); console.log('do other things, ' + new date()); })(); 执行此段代码,可以在终端中看到结果: do some thing, mon feb 23 2015 21:52:11 gmt+0800 (cst) do other things, mon feb 23 2015 21:52:14 gmt+0800 (cst) 另外 async 函数可以正常的返回结果和抛出异常。await 函数调用即可拿到结果,在外面包上 try/catch 就可以捕获异常。下面是一个从豆瓣 api 获取数据的例子: 全选复制放进笔记var fetchdoubanapi = function() { return new promise((resolve, reject) => { var xhr = new xmlhttprequest(); xhr.onreadystatechange = function() { if (xhr.readystate === 4) { if (xhr.status >= 200 && xhr.status < 300) { var response; try { response = json.parse(xhr.responsetext); } catch (e) { reject(e); } if (response) { resolve(response, xhr.status, xhr); } } else { reject(xhr); } } }; xhr.open('get', 'https://api.douban.com/v2/user/aisk', true); xhr.setrequestheader("content-type", "text/plain"); xhr.send(data); }); }; (async function() { try { let result = await fetchdoubanapi(); console.log(result); } catch (e) { console.log(e); } })(); es7 还在草案阶段,那现在想用这个特性怎么办?可以尝试 google 的一个 javascript 预编译器 traceur,可以将高版本的 javascript 编译为 es5 代码,已经实验性的支持了 async/await (需要使用 --experimental 来指定开启)。traceur 可以直接在后端使用,也可以在浏览器中使用。另外如果只在 node.js 环境中使用的话,还有一些 polyfill 模块,比如这个。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样使自己的嘴唇变得湿润?
如图,在平面直角坐标系中,已知点A(0,4),点P
沙特几月份最热
绿豆和萝卜和什么相克
EXCEL2010复制稍微偏大的数据总显示无响应
熊猫8x40与星特朗望远镜那个好
用3、6、0、9组成最大的四位数是( ),组
幼小犬、幼大犬、幼年犬、青年犬、成年犬这些
南召县公安局交警大队车管所我想知道这个在什
临汾到咸阳火车站的路线
【navy是什么颜色】英语翻译BOTTOM-NAVY什么
苗乡农家乐怎么去啊,有知道地址的么
幸福是陶渊明"____,____"的悠闲自在
联想Y470 GT550M 怎么切换显卡为N卡
阅读以下材料,回答问题。背景材料:某校对外
推荐资讯
【湖南风景区有哪些】...回答问题“湖南省有
爱普生c63怎样打印测试纸
sinx在0到派上的积分为什么是负的,0到派上si
蓝牙音响放着不用能放多久
学驾驶,开车把人撞了,应当谁赔钱
雅迪金刚狼电动车大灯改led还是疝气灯好
脸上长黑翘子有什么方法可以去掉吗
被平台黑了7万多,能追回吗?
用角铁搭一个房子,有什么材料可以代替铁皮,
车队副食店地址在哪,我要去那里办事
下午2点从上海发的中通快递什么时候到江都?第
望君洲芦苇站我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?