async

nodejs调用WinRAR解压

荒凉一梦 提交于 2020-02-09 01:40:18
var cp = require ( "child_process" ) ; function unZIP ( winRarPath , password , zipFilePath , unZipFolder ) { return new Promise ( async ( resolve , reject ) => { cp . execFile ( winRarPath , [ "x" , "-inul" , `-p ${ password } ` , zipFilePath , unZipFolder ] , function ( err , stdout , stderr ) { if ( err ) { reject ( err ) } resolve ( stdout ) } ) } ) } async function main ( ) { try { let result = await unZIP ( "C:\\Program Files\\WinRAR\\WinRAR.exe" , '111111' , "D:\\test\\新建文本文档.rar" , "D:\\test" ) ; console . log ( '解压成功' ) } catch ( error ) { console . log ( error ) } } main ( ) 来源: CSDN

C++11异步编程(std::async, std::future, std::packaged_task, std::promise)

烈酒焚心 提交于 2020-02-08 23:13:06
std::async是一个函数模板,会启动一个异步任务,最终返回一个std::future对象。在之前我们都是通过thread去创建一个子线程,但是如果我们要得到这个子线程所返回的结果,那么可能就需要用全局变量或者引用的方法来得到结果,这样或多或少都会不太方便,那么async这个函数就可以将得到的结果保存在future中,然后通过future来获取想要得到的结果。async比起thread来说可以对线程的创建又有了更好的控制,比如可以延迟创建。下面先介绍一下std::future, std::packaged_task, std::promise。 std::future std::future是一个类模板,提供了一个访问异步操作的结果的机制。我们可以通过future_status去查询future的三种状态,分别是deferred(还未执行),ready(已经完成),timeout(执行超时),所以我们可以通过这个去查询异步操作的状态。future提供了一些函数比如get(),wait(),wait_for(),一般用get()来获取future所得到的结果,如果异步操作还没有结束,那么会在此等待异步操作的结束,并获取返回的结果。wait()只是在此等待异步操作的结束,并不能获得返回结果。wait_for()超时等待返回结果。 // future<获取的结果类型> 变量名 //

node入门

给你一囗甜甜゛ 提交于 2020-02-08 22:48:18
一、基础 运行环境搭建 LTS(Long Term Support) 稳定版 Current 实验版 下载页面: http://nodejs.cn/download/ 命令行输入node -v,查看是否安装成功 JS由三部分组成:ECMAScript、DOM、BOM。 Node.js由ECMAScript及Node环境提供的一些附加API组成的,包括文件、网络、路径等等一些更加强大的API。 ECMAScript语法在Node环境中都可以使用 JS开发弊端 两大问题:文件依赖和命名冲突 Node.js模块化开发 Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下外部无法得到。 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块。 模块成员导出 exports.version 的version是属性名字,随便起名,等号后的version是上面的变量。 模块成员导入 a接收了exports对象 ./b.js的后缀.js是可以省略掉的 另一种导出方式 exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准 二、模块化 系统模块 Node运行环境提供的API。因为这些API都是以模块化的方式进行开发的,所以我们又称为Node运行环境的API为系统模块。

Js中的函数

ⅰ亾dé卋堺 提交于 2020-02-07 03:12:24
函数柯里化 柯里化概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数 看一个例子: var add = function(x) { return function(y) { return x + y; }; }; var increment = add(1); var addTen = add(10); increment(2); // 3 addTen(2); // 12 我们定义了一个 add 函数,它接受一个参数并返回一个新的函数。调用了 add 之后,返回的函数就通过闭包的方式记住了 add 的第一个参数。 因为一次性地调用它有点繁琐,所以使用一个特殊的 curry 帮助函数使得这类函数的定义和调用更加容易。 curry的封装 // 初步封装 var currying = function(fn) { // args 获取第一个方法内的全部参数 var args = Array.prototype.slice.call(arguments, 1) return function() { // 将后面方法里的全部参数和args进行合并 var newArgs = args.concat(Array.prototype.slice.call(arguments)) // 把合并后的参数通过apply作为fn的参数并执行 return fn.apply

C++ 异步访问

和自甴很熟 提交于 2020-02-06 03:34:26
文章目录 packaged_task 构造 赋值 shared state 相关操作 其他操作 promise 构造 赋值 shared state 相关操作 其他操作 async future 构造 赋值 获取值 其他操作 shared_future 构造 赋值 获取值 packaged_task 一个 packaged_task 包装了一个可调用对象,并且允许 异步获取该可调用对象的结果 。 它重载了 operator() ,因此它也是一个可调用对象。 一个 packaged_task 对象包含两个部分: stored task:就是一个可调用对象。 shared state:用于存储 stored task 的执行结果,且可以通过 future 异步访问之。 调用 get_future 成员函数之后,返回的 future 便与 shared state 建立关联。 shared state 会一直存在直到最后一个与之关联的对象释放了该关联,或该对象被销毁。 构造 default (1) packaged_task() noexcept; initialization (2) template <class Fn> explicit packaged_task (Fn&& fn); with allocator (3) template <class Fn, class

net core体系-网络数据采集(AngleSharp)-1初探

有些话、适合烂在心里 提交于 2020-02-05 23:17:13
有这么一本Python的书: <<Python 网络数据采集>> 我准备用.NET Core及第三方库实现里面所有的例子. 这是第一部分, 主要使用的是AngleSharp: https://anglesharp.github.io/ (文章的章节书与该书是对应的) 发送Http请求 在python里面这样发送http请求, 它使用的是python的标准库urllib: 在.NET Core里面, 你可以使用 HttpClient , 相应的C#代码如下: var client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("http://pythonscraping.com/pages/page1.html"); response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); return responseBody; 或者可以简写为: var client = new HttpClient(); var responseBody = await client

.NET Core 网络数据采集 -- 使用AngleSharp做html解析

梦想与她 提交于 2020-02-05 22:43:13
有这么一本Python的书: <<Python 网络数据采集>> 我准备用.NET Core及第三方库实现里面所有的例子. 这是第一部分, 主要使用的是AngleSharp: https://anglesharp.github.io/ (文章的章节书与该书是对应的) 第1章 初见网络爬虫 发送Http请求 在python里面这样发送http请求, 它使用的是python的标准库urllib: 在.NET Core里面, 你可以使用 HttpClient , 相应的C#代码如下: var client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("http://pythonscraping.com/pages/page1.html"); response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); return responseBody; 或者可以简写为: var client = new HttpClient(); var responseBody = await client

Vue异步组件Demo

回眸只為那壹抹淺笑 提交于 2020-02-05 07:40:49
Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载。为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义。Vue.js 只在组件需要渲染时触发工厂函数,并且把结果缓存起来,用于后面的再次渲染。 下面是我写的一个简单Vue异步组件Demo。 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script> // 如果浏览器不支持Promise就加载promise-polyfill if ( typeof Promise === 'undefined' ) { var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src = 'https://cdn.jsdelivr.net/npm/es6-promise

【对比学习】koa.js、Gin与asp.net core——中间件

*爱你&永不变心* 提交于 2020-02-04 01:48:07
web框架中间件对比 编程语言都有所不同,各个语言解决同一类问题而设计的框架,确有共通之处,毕竟是解决同一类问题,面临的挑战大致相同,比如身份验证,api授权等等,鄙人对node.js,golang,.net core有所涉猎,对各自的web框架进行学习的过程中发现了确实有相似之处。下面即对node.js的koa、golang的gin与.net core的asp.net core三种不同的web后端框架的中间件做一个分析对比 Node-Koa.js 应用级中间件 //如果不写next,就不会向下匹配--匹配任何一个路由 app.use(async(ctx,next)=>{ console.log(new Date()) await next(); }) 路由级中间件 router.get('/news',async(ctx,next)=>{ console.log("this is news") await next(); }) 错误处理中间件 app.use(async(ctx,next)=>{ //应用级中间件 都需要执行 /* 1.执行若干代码 */ next();//2.执行next() 匹配其他路由 //4.再执行 if(ctx.status==404){ ctx.status=404 ctx.body="这是一个404" }else{ console.log(ctx

Nodejs异步框架——async

守給你的承諾、 提交于 2020-02-02 17:12:09
上次的网页爬虫写完后,又打算做一个爬图的工具。前两天已经写好了代码。思路如下: 分析页面还是采用cheerio,对<div>中的img进行分析抽取,拿到图片的url。然后用childprocess调用系统的curl工具来下载这些远程url的图片。最后将这些写入到系统的硬盘中。 功能代码如下(只是下载图片的功能代码): var url=require('url'); var fs=require('fs'); var cp=require('child_process'); var DOWNLOAD_DIR='./'; var file_url='http://htmljs.b0.upaiyun.com/uploads/1396874069658-nodejs_1280x1024.png'; function downloads(file_url){ var filename=url.parse(file_url).pathname.split('/').pop(); var file=fs.createWriteStream(DOWNLOAD_DIR+filename); var curl=cp.spawn('curl',[file_url]); //use spawn curl.stdout.on('data',function(data){ file.write(data);