async

promise详解

久未见 提交于 2019-12-10 01:12:03
/** * 浅谈 Promise * 问题:怎么理解的?:Promise是什么,做什么的,有啥问题,有啥解决办法 *//** * 1、Promise是一种异步编程的解决方案,用于解决回调地狱的问题 * 是构造函数,可以理解为是一个容器,里面是异步事件; *//** * 2、 * 特点: * 1、Promise对象的状态不受外界影响,三种状态:pending(初始状态)、fulfilled(成功)、rejected(失败); * 2、状态改变后不再改变,状态不可逆,只能pending到fulfilled,或者pending变成rejected; * 缺点: * 1、无法取消Promise,一旦建立无法取消; * 2、如果不设置回调函数,Promise内容出错,不会反映到外部; * 3、处于pending状态,无法得知是处于了哪一个阶段,是刚开始,还是快结束了; *//** * 3、Promise的方法 && 简单实现 && axios的实现 * Promise.then()、Promise.catch()、Promise.finally() */ // 1、Promise.resolve(value)方法返回一个以给定值解析后的Promise 对象 Promise.resolve('success').then((res) => { console.log(res); //

Node.js教程

心不动则不痛 提交于 2019-12-09 18:37:03
目录 第一章 认识Node.js 1.1 安装node 1.2 node示例 1.3 第一个node程序 1.4 Supervisor介绍 1.5 nrm和nvm介绍 第二章 Node.js基础知识 2.1 web应用和第一个express应用 2.2 Route介绍和使用 2.3 express路由演示 2.4 express路由API使用(一) 2.5 express路由API使用(二) 2.6 路由拆分 2.7 中间件 2.8 异常处理 2.9 MySQL 2.10 Sequelize介绍和使用 第三章 从实战中熟悉操作 3.1 需求分析 3.2 API设计 3.3 模型创建 3.4 API里面具体使用ORM模型 3.5 运维和发布 第四章:总结与问题归纳 4.1 总结 4.2 问题归纳 第一章 认识Node.js 1.1 安装node http://nodejs.cn/download/ 检验是否安装完成 打开终端输入以下命令,是否出现版本号 node -vnpm -v 1.2 node示例 const os = require('os'); // 读取系统的cpu的信息const cpus = os.cpus(); //获取当前系统的cpu的数量console.log(cpus.length); //获取内存信息const total = os.totalmem();/

async 函数

早过忘川 提交于 2019-12-09 17:04:37
Generator的语法糖async 语法: async function foo(){ await 异步操作; await 异步操作; } 特点: 1、不需要像Generator去调用next方法,遇到await等待,当前的异步操作完成就往下执行 2、返回的总是Promise对象,可以用then方法进行下一步操作 3、async取代Generator函数的星号*,await取代Generator的yield 4、语意上更为明确,使用简单,暂时没有任何副作用 <script> async function awaitTest() { let result = await Promise.resolve('执行成功'); console.log(result); let result2 = await Promise.reject('执行失败'); console.log(result2); let result3 = await Promise.resolve('还想执行一次');// 执行不了 console.log(result3); } awaitTest(); </script> async function sendXml(url) { return new Promise((resolve, reject) => { $.ajax({ url, type: 'GET',

C#巧妙使用关键字asyn/await

巧了我就是萌 提交于 2019-12-08 23:32:31
原文链接(程序杰杰): https://www.cnblogs.com/ningxinjie/p/12008561.html 经过一番的探索,终于搞清楚关键字async/await 在.net4.5之后可用的巧妙之处,在这里记录一下也与大家分享一下个人的心得体会 async:异步执行 await:异步执行中的等待其执行完(最大的优点是它是后台等待,因此不阻塞GUI,界面交互非常的好) 使用async方法要定义async Task或者async Task<T> 最好不要定义async void方法来调用,async void是处理程序等,总结结论就是要使用async Task或者async Task<T> 使用asyn方法,可以用同步的格式,执行异步的代码,如下: 1 int a = 0; 2 private void button1_Click(object sender, EventArgs e) 3 { 4 Task.Run(()=> { 5 Stopwatch sw = new Stopwatch(); 6 sw.Start(); 7 Thread.Sleep(2000); 8 sw.Stop(); 9 SetText(textBox1,this, sw.ElapsedMilliseconds.ToString()); 10 }); 11 var eee=Ce_async()

LitElement(六)生命周期

不想你离开。 提交于 2019-12-08 23:07:44
1、概述 基于LitElement的组件通过响应观察到的属性更改而异步更新。 属性更改是分批进行的,如果在请求更新后,更新开始之前,发生更多属性更改,则所有更改都将捕获在同一次更新中。 在较高级别上,更新生命周期为: 一个属性被设置 检查是否需要更新。如果需要更新,发出请求。 执行更新: 通过properties 和 attributes. 渲染元素 resolve 一个 promise ,表示更新已完成 1.1 LitElement和浏览器事件循环 浏览器通过处理事件循环中的任务队列来执行JavaScript代码。在事件循环的每次迭代中,浏览器都从队列中提取任务并将其运行到完成。 任务完成后,在从队列中执行下一个任务之前,浏览器会分配时间来从其他来源(包括DOM更新,用户交互和微任务队列)执行工作。 默认情况下,LitElement更新是异步请求的,并作为微任务排队。这意味着上面的步骤3(执行更新)在事件循环的下一次迭代结束时执行。 您可以更改此行为,以便第3步在执行更新之前等待Promise。有关更多信息,请参见 performUpdate 。 有关浏览器事件循环的更详细说明,请参阅 Jake Archibald的文章 。 1.2 生命周期回调 LitElement还从Web组件标准继承 默认的生命周期回调 : connectedCallback :

c# await async 笔记

扶醉桌前 提交于 2019-12-07 16:42:47
参考链接:http://www.cnblogs.com/xianyudotnet/p/5716908.html 【意义】异步方法的意义就是保证一个进程使用多线程多次执行一个方法时,不会因为其中某一次执行阻塞调用进程   【原理】利用方法内Task调用新线程,await使方法内等待Task结果时调用进程不被阻塞,多次调用相当于多个线程并行。(不被阻塞的原因应该是异步方法本身就和内部的Task跑在一个线程里)   【区别】普通方法只用Task也可以并行,当方法内需要Task返回值时,等待Task结果就会阻塞调用进程。   【应用】主要应用在没有返回值,使用线程且需要线程返回结果的方法。    一些分析:   1.异步方法有返回值会怎样?   因为异步方法返回类型是Task<T>,所以获取返回值只能await或者.Result,两者都会让当前方法等待。   2.那么异步方法是不是没有作用了?   如果是用.Result获取,那么是。如果是await就不一定了。await只能在async方法中使用,所以await获取异步方法返回值的方法也是异步的,再往上最终只能肯定是一个普通方法调用异步方法。是否有用取决于普通方法内调用最上层异步方法的方式。   3.为什么返回值类型是T,方法返回类型需要是Task<T>?   要达到异步方法内等待线程结果不阻塞调用进程,这个方法本身就应该在线程中执行

通过async参数获取jQuery中Ajax函数的返回值

南笙酒味 提交于 2019-12-06 23:48:41
先描述一下这个函数使用的环境, 网站后台做一个在线访客列表功能,列出每一个用户实时访问的信息(包含当前访问的商品,类目,所在的控制器 url .... ) 扯远了, 这个跟jquery这个没关系 为了节省服务器资源, 商品信息采取异步获取, 服务器中只记录了访客访问的商品ID. 后台列表页中的jquery获取商品函数如下: function getGoodsInfo(goods_id){ var goods_info = ""; if(goods_id == ""){ return false; } var rule = /^\d+$/i; var url = "/Admin/Goods/ajaxInfo"; if (rule.test(goods_id)) { $.ajax({ type:"GET", dataType:"json", cache:true, url:url, data:"gid=" + goods_id, success:function (data) { if (data.status == true) { goods_info = "<dl>" + " <dt><a href=\"" + data.data.url + "\" target=\"_blank\"><img src=\"" + data.data.gallery + "\"></a> </dt

C# .net async await 学习

让人想犯罪 __ 提交于 2019-12-06 16:41:21
async/await简单介绍 在处理比较耗时的操作(如图片处理、数据压缩、http请求等)传统的异步方法是直接使用Thread或者Task进行操作,在复杂的应用编写中可能会出现回调的问题,因此C#目前主要推荐使用async/await来进行异步操作。也就是 async/await主要用来异步回调问题 , 而真正的异步操作还是用Task。 返回值 通常返回 Task 或 Task<TResult> 。 在异步方法中,await 运算符应用于通过调用另一个异步方法返回的任务 如果方法包含指定 TResult 类型操作数的 return 语句,将 Task<TResult> 指定为返回类型,如果方法不含任何 return 语句或包含不返回操作数的 return 语句,将 Task 用作返回类型 异步方法也可以具有 void 返回类型。但是不推荐使用,因为无法等待具有 void 返回类型的异步方法,并且无效返回方法的调用方捕获不到异步方法引发的任何异常,而且也违背了我们使用他的初衷--解决异步回调问题 还需要注意: 异步方法既不能声明任何 in、ref 或 out 参数,也不能具有引用返回值,但它可以调用具有此类参数的方法 实例 假如现在要做饭,需要做米饭2秒,做汤2秒;同步的方法就是先做米饭等待2秒,然后做汤等待2秒;异步的方法,米饭和汤同时做,一共花2秒 代码如下 class

JavaScript 异步加载

痞子三分冷 提交于 2019-12-06 14:21:18
本文转载自:http://blog.csdn.net/m13666368773/article/details/7586106 一、同步加载与异步加载的形式 1. 同步加载 我们平时最常使用的就是这种同步加载形式: <script src="http://yourdomain.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像)、渲染、代码执行。 js 之所以要同步执行,是因为 js 中可能有输出 document 内容、修改dom、重定向等行为,所以默认同步执行才是安全的。 以前的一般建议是把<script>放在页面末尾</body>之前,这样尽可能减少这种阻塞行为,而先让页面展示出来。 简单说:加载的网络 timeline 是瀑布模型,而异步加载的 timeline 是并发模型。 2. 常见异步加载(Script DOM Element) (function() { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'http://yourdomain.com/script.js'; var x = document

C# 异步编程

梦想的初衷 提交于 2019-12-06 14:20:29
基于Task的异步 编程 模式(TAP)是Microsoft为.Net平台下使用Task进行编程所提供的一组建议,这种模式提供了可以被await消耗(调用)方法的APIs,并且当使用async关键字编写遵守这种模式的方法时,手写Task通常很有用。通常TAP用起来与普通方式没什么两样,但是不支持ref和out参数。 任务和线程的区别: 1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。 2、任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务相比线程池有很小的开销和精确的控制。 3、Task的优势   ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:   ◆ ThreadPool不支持线程的取消、完成、失败通知等交互性操作;   ◆ ThreadPool不支持线程执行的先后次序; 以往,如果开发者要实现上述功能,需要完成很多额外的工作,现在,微软提供了一个功能更强大的概念:Task。Task在线程池的基础上进行了优化,并提供了更多的API。 下面分析一理异步编程中的一些关键点 1.await 我们都知道await关键字是.Net FrameWork4.5引入的特性。await使得我们使用异步更加时特别便捷,并且还 不会导致线程堵塞