async

SpringBoot ――异步调用Async

匿名 (未验证) 提交于 2019-12-03 00:37:01
什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行。 如何实现异步调用? 多线程,这是很多人第一眼想到的关键词,没错,多线程就是一种实现异步调用的方式。 在非spring目项目中我们要实现异步调用的就是使用多线程方式,可以自己实现Runable接口或者集成Thread类,或者使用jdk1.5以上提供了的Executors线程池。 StrngBoot中则提供了很方便的方式执行异步调用。 按照官方示例开撸 代码入下 maven依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> 1.5 .3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> 启动类:添加@EnableAsync注解

nodejs async之waterfall接口连续多次查表最终返回结果

匿名 (未验证) 提交于 2019-12-03 00:27:02
async֮waterfall : async.waterfall(tasks,callback) 瀑布流 函数 ,串行依次执行数组中函数,直至回调。 参数 tasks 为数组,其包含需依次执行之函数。 第二个参数为 回调函数 ,有误则行之以馈其错,无误则tasks完毕后行之。 var async = require('async'); const mysql = require ('mysql'); var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig; var db = mysql.createConnection(mysqlconfig); var sqlaccountWithsessionid = 'SELECT account FROM user_tb WHERE sessionid =?'; var sqlsnWithaccount = 'SELECT sn FROM relate_tb WHERE account =?'; var sqlaccount = 'SELECT account FROM dev_tb WHERE sn =?'; var sessionid='25kq5plr2lg'; var tasks = [ function(callback) { db

async函数

匿名 (未验证) 提交于 2019-12-03 00:17:01
一.什么是async函数 1. 概念 async函数是co(Generator)函数的语法糖。 语法是将Generator函数的*替换为async; yield替换为await; var fnName = async function() { let result = await Promise.resolve(1); console.log(result); //1 } fnName(); // 相当于 const co = require('co'); co(function* fnName() { let result = yield Promise.resolve(1); console.log(result); //1 }) async函数相当于执行器+Generator函数,原理如下: async function fn() { //.... } // 模拟源码实现 function fn() { // run+Generator--等同于co + Generator return run(function* (){ }) } function run(fn) { return new Promise((resolve,reject) => { const gen = fn(); function next(nextFn) { let next; try { next

捕捉Promise reject 错误

匿名 (未验证) 提交于 2019-12-03 00:15:02
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { // 模拟出错了,返回 ‘error' reject('error'); }, time); }) }; var start = async function () { try { console.log('start'); await sleep(3000); // 这里得到了一个返回错误 // 所以以下代码不会被执行了 console.log('end'); } catch (err) { console.log(err); // 这里捕捉到错误 `error` } }; 来源:博客园 作者: 青春无敌小宇宙 链接:https://www.cnblogs.com/ckmouse/p/11770984.html

es6学习4:async和await

匿名 (未验证) 提交于 2019-12-03 00:13:02
async async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。 function setNumAdd ( n ) { return new Promise (( resolve , reject ) =>{ setTimeout ( ()=>{ n += 1 ; resolve ( n ) }, 1000 ) }) } function setNumSub ( n ) { return new Promise (( resolve , reject ) =>{ setTimeout ( ()=>{ n -= 1 ; resolve ( n ) }, 1000 ) }) } async function d ( n ) { const w1 = await setNumAdd ( n ); const w2 = await setNumSub ( n ); return w1 + w2 } d ( 10 ). then ( v =>{ console . log ( v ) //10 }) async 函数返回一个 Promise 对象。 async 函数内部 return 语句返回的值,会成为 then 方法回调函数的参数。 async

并发执行多个 await,promiss.all

匿名 (未验证) 提交于 2019-12-03 00:12:02
await 可以同步执行,但是有时候为了提升性能,反而需要并发多个await同步执行,此时需要用到promise.all DEMO如下 async function doit () { var list = []; list . push ( sayHello ( 'a1' )) list . push ( sayHello ( 'a2' )); var result = await Promise . all ( list ); console . log ( result ); console . log ( 'over' ) } async function sayHello ( name ) { await new Promise ( function ( resolve ) { setTimeout ( function () { console . log ( name + new Date ()); resolve ( name ); }, 1000 ) }) } doit (); 来源:51CTO 作者: isaisai 链接:https://blog.csdn.net/ISaiSai/article/details/101694918

使用ProxyBroker构建代理池

匿名 (未验证) 提交于 2019-12-03 00:03:02
import asyncio from proxybroker import Broker async def show(proxies): while True: proxy = await proxies.get() if proxy is None: break print('Found proxy: %s' % proxy) proxies = asyncio.Queue() broker=Broker(proxies) tasks=asyncio.gather(broker.find(types=['HTTP','HTTPS'],limit=10),show(proxies)) loop=asyncio.get_event_loop() loop.run_until_complete(tasks) 来源:博客园 作者: hankleo 链接:https://www.cnblogs.com/hankleo/p/11509591.html

async/await 使用

匿名 (未验证) 提交于 2019-12-03 00:02:01
1.在函数之间加上async意味着:函数将返回一个Promise async f() { return '444'; }, f().then(res=>{ console.log(res) //打印444 }); 2.await的基本语法 async f() { let promise = new Promise((resolve, reject) => { console.log('1111') setTimeout(() => resolve("done!"), 2000) }); let result = await promise; //等待promise的resolve执行完再执行 console.log(result); // "done!" 2s后打印 }, f(); 函数执行将会在 let result = await promise 这一行暂停,直到Promise返回结果,因此上述代码将会2秒后打印出done! 再看: fn(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(2 * num) }, 2000); }) }, async testResult() { let first = await this.fn(30); let second = await

await与async

匿名 (未验证) 提交于 2019-12-02 23:57:01
1-1.await await 的意思就是 等待 。它后面可以跟一个表达式。如果是值(如字符串、数字、普通对象等等)的话,返回值就是本身的值。 不过最常用的是后面跟一个 promise 对象。 await 会等待这个 promise 的状态由 pending תΪ fulfilled 或者 rejected 。在此期间它会阻塞,延迟执行await语句后面的语句。 如果 promise 对象的结果是 resolve ,它会将 resolve 的值,作为 await 表达式的运算结果。 await 与 async 本身就是 promise 化编程的一种语法糖。对比一下两种写法。 // 异步promise化的函数--模拟请求后端接口 function asyncFn () { return new Promise(function (resolve, reject) { setTimeout(function () { if (true) { console.log('resolve console') resolve('resolve return') } else { reject('reject return') } }, 2000) }) } // promise asyncFn().then((res) => { console.log(res) }, (err) => {

async await练习随笔

匿名 (未验证) 提交于 2019-12-02 23:56:01
(function(){ /* async function timeout(){ return "hello async"; } timeout().then(result => { console.log(result); }) //console.log(timeout()); async function asyncFn() { return "我后执行"; }; asyncFn().then(result => { console.log(result); }) console.log("先执行"); //async会被定义为异步函数,不会影响后面正常的执行。 async function test() { throw new Error("it's error"); }; test().then(success => console.log('成功了',success)) .catch(error => console.log("失败了",error)); async function throwStatus() { return "show all"; }; throwStatus().then(success => console.log("成功",success)) .catch(error => console.log("失败",error)); async