回调函数

google浏览器下开发UHF超高频读写器

℡╲_俬逩灬. 提交于 2019-11-28 19:29:17
在google浏览器下采用js脚本开发UHF超高频读写器, API接口有如下所示: .1、UHF读卡器寻卡,符合18000-6C,G2的卡和标签 G2_Inventory(isEPC) G2_Inventory方法通过超高频读卡器YW-602U来寻卡,目前只支持单张卡片。 参数:isEPC:是否读取EPC,isEPC=0,返回卡片的EPC。isEPC=1返回卡片的TID 回调函数返回结果: FunctionID=23, Result:数字,函数执行后的返回值, UID:自定义的序号, CardNo:根据参数返回的EPC或者TID strData:与CardNo相同 ValData:无 3.2、读取UHF标签的内存区域 G2_Read(memType,StartPos, ReadLength,FormatID) G2_Read方法读取UHF标签的内存。 需要的属性: KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串. KeyString:密钥字符串. 参数:memType:内存区域,0保留区,1EPC区,2TID区,3用户区 StartPos: 内存起始地址.(必须为偶数) ReadLength:要读取的字节长度.(必须为偶数) FormatID: 数据返回的格式,0为16进制字符串,1为普通字符串. 回调函数返回结果:

JS异步编程

江枫思渺然 提交于 2019-11-28 19:27:35
1.1 什么是异步 异步(async) 是相对于 同步(sync) 而言的,很好理解。 同步 就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。而 异步是不用等待前一个任务执行完成也能够执行 比如: setTimeout(function(){ console.log(1); }, 1000); console.log(2);// 2 1 setTimeout就是一个 异步任务 ,当JS引擎顺序执行到setTimeout的时候发现他是个异步任务,则会把这个任务挂起,继续执行后面的代码。直到1000ms后,回调函数才会执行,这就是异步,在执行到setTimeout的时候,JS并不会傻呵呵的等着1000ms执行cbFn回调函数,而是继续执行了后面的代码。所以执行结果是:2 1 1.2 为啥要在JS中使用异步 由于javascript是 单线程 的,只能在JS引擎的主线程上运行的,所以js代码只能一行一行的执行,不能在同一时间执行多个js代码任务,这就导致如果有一段耗时较长的计算,或者是一个ajax请求等IO操作,如果没有异步的存在,就会出现用户长时间等待,并且由于当前任务还未完成,所以这时候所有的其他操作都会无响应。 1.3 那为啥JS不设计成多线程的 这主要跟javascript的历史有关,js最开始只是为了处理一些表单验证和DOM操作而被创造出来的

MFC常用基本数据类型

我的梦境 提交于 2019-11-28 18:17:08
ATOM 原子(原子表中的一个字符串的参考) BOOL 布尔变量 BOOLEAN 布尔变量 BYTE 字节( 8 位) CCHAR Windows 字符 CHAR Windows 字符 COLORREF 红、绿、蓝 (RGB) 彩色值 (32 位 ) Const 变量,该变量的值在 执行 期间保持为常量 CRITICAL_SECTION 临界段对象 CTRYID 国名标识符 DLGPROC 指向一个对话框过程的指针 DWORD 双字 (32 位 ) ENHMFENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举增强的元文件记录 ENUMRESLANGPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源语言。 ENUMRESNAMEPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源名称。 ENUMRESTYPEPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源类型。 FARPROC 指向一个回调函数的指针 FLOAT 浮点变量 FMORDER 32 位字体映射值的数组 FONTENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举字体 GOBJENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举图形 设备 接口 (GDI) 对象 HACCEL 加速键表句柄 HANDLE 对象的句柄

雷林鹏分享Node.js 回调函数

别说谁变了你拦得住时间么 提交于 2019-11-28 18:10:10
  Node.js 异步编程的直接体现就是回调。   异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。   回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。   例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。   回调函数一般作为函数的最后一个参数出现:   function foo1(name, age, callback) { }   function foo2(value, callback1, callback2) { }   阻塞代码实例   创建一个文件 input.txt ,内容如下:   码农教程官网地址:www.codercto.com   创建 main.js 文件, 代码如下:   var fs = require("fs");   var data = fs.readFileSync('input.txt');   console.log(data.toString());   console.log("程序执行结束!");   以上代码执行结果如下:   $ node main.js   码农教程官网地址:www

nodeJS从入门到进阶

早过忘川 提交于 2019-11-28 17:47:49
一、Node.js基础知识 1、概念 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是JavaScript的运行环境 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 2、安装使用 官网下载地址:http://nodejs.cn/ nodeJS5个基本对象: 1、require 引入模块 2、export 导出对象 语法: 1)export.属性 = 值; 2)export.方法名 = 函数; 注意: 1)export时module对象的引用 export == module.export (指向同一个内存空间) 2)export是module.export的引用, 不能改指向,只能添加属性和方法 3)module.export才是真正的暴露对象,指向哪里就暴露哪里-----推荐使用 3、module 模块对象 module.export module.export.属性 = 值; module.export.方法名 = 函数; module.export = 对象或函数 module.id 模块id,模块名称 module.parent 模块父级 module.filename 模块文件名和路径 module.children 子模块列表 module.paths 模块查找路径,如果当前目录找不到node

百万年薪python之路 -- 并发编程之 多线程 三

老子叫甜甜 提交于 2019-11-28 17:19:22
1. 阻塞,非阻塞,同步,异步 进程运行的三个状态: 运行,就绪,阻塞. 从执行的角度: ​ 阻塞: 进程运行时,遇到IO了,进程挂起,CPU被切走. ​ 非阻塞: 进程没有遇到IO 当进程遇到IO,但我通过某种手段,让CPU强行运行我的进程 提交任务的角度: ​ 同步: 提交一个任务,自任务开始运行直到此任务结束(可能有IO),返回一个返回值之后,我在提交下一个任务. ​ 异步: 一次提交多个任务,然后我就直接执行下一行代码. 返回的结果,应该如何回收? eg: 给三个老师发布任务: ​ 同步: 先告知第一个老师完成写书的任务,然后我在原地等待,等他两天之后完成了,告知我完事了,我才发布下一个任务........ ​ 异步: 直接将三个任务告知三个老师,我就忙我的,知道三个老师完成之后,告知我. 2. 同步调用,异步调用 同步调用: # 同步调用 from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor import time import random import os def task(i): print(f"{os.getpid()} 开始任务") time.sleep(random.randint(1,3)) print(f"{os.getpid()} 任务结束") return i

4种常用的AJAX请求方式

白昼怎懂夜的黑 提交于 2019-11-28 16:21:06
在jQuery中,AJAX常见的请求方式主要有一下4种: 1、$.ajax()返回其创建的 XMLHttpRequest 对象  $.ajax() 只有一个参数:参数key/value对象,包含各配置及回调函数信息。 如果你指定了dataType选项,那么需要保证服务器返回正确的MIME信息,(如 xml 返回 “text/xml”)。 实例: 保存数据到服务器,成功时显示信息。 $.ajax({ type: "post", dataType: "html", url: '/Resources/GetList.ashx', data: dataurl, success: function (data) { if (data != "") { $("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$")[1], buttonClickCallback: PageClick }); $("#anhtml").html(data.split("$")[0]); } } }); 2.通过远程 HTTP GET 请求载入信息  相比于复杂的$.ajax而言,GET请求功能则显得更加简单,请求成功时可调用回调函数。当然如果需要在出错时执行函数,那么还请使用$.ajax。 实例: $.get("test.cgi",

教你用Python爬虫爬取知乎妹子信息,还愁找不到女朋友吗?

旧街凉风 提交于 2019-11-28 16:09:16
Python模拟爬虫抓取知乎用户信息以及人际拓扑关系,使用scrapy爬虫框架,数据存储使用mongo数据库。 既然需要用到scrapy爬虫框架,那就来科普一下scrapy爬虫框架吧~ Scrapy:1、Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取 web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 2、Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 (科普完啦~咱回归正题~) 爬虫项目部署:   进入zhihu_spider后执行```docker-compose up``` ,进入container后和本地运行方法相同,依次启动mongo、rabbitmq、异步任务、爬虫进程即可。 其它需要说明的问题:   爬虫框架从start\_requests开始执行,此部分会提交知乎主页的访问请求给引擎,并设置回调函数为post_login.   post\_login解析主页获取\_xsrf保存为成员变量中,并提交登陆的POST请求,设置回调函数为after\_login.   after\_login拿到登陆后的cookie,提交一个start\

vue之nextTick

巧了我就是萌 提交于 2019-11-28 15:55:25
todo简介: vue是非常流行的框架,他结合了angular和react的优点,从而形成了一个轻量级的易上手的具有双向数据绑定特性的mvvm框架。本人比较喜欢用之。在我们用vue时,我们经常用到一个方法是this.$nextTick,相信你也用过。我常用的场景是在进行获取数据后,需要对新视图进行下一步操作或者其他操作时,发现获取不到dom。因为赋值操作只完成了数据模型的改变并没有完成视图更新。在这个时候我们需要用到本章介绍的函数。 举例: new Vue({ el: '#app', data: { list: [] }, mounted: function () { this.get() }, methods: { get: function () { this.$http.get('/api/article').then(function (res) { this.list = res.data.data.list // ref list 引用了ul元素,我想把第一个li颜色变为红色           //下面方法无效 this.$refs.list.getElementsByTagName('li')[0].style.color = 'red'}) //$refs:注①           //下面方法有效     this.$nextTick(() => {      

这一次,彻底弄懂 JavaScript 执行机制

你说的曾经没有我的故事 提交于 2019-11-28 15:44:32
本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1'; console.log(a); let b = '2'; console.log(b);复制代码 然而实际上js是这样的: setTimeout(function(){ console.log('定时器开始啦') }); new Promise(function(resolve){ console.log('马上执行for循环啦'); for(var i = 0; i < 10000; i++){ i == 99 && resolve(); } }).then(function(){ console.log('执行then函数啦') }); console.log('代码执行结束');复制代码 依照js是按照语句出现的顺序执行这个理念,我自信的写下输出结果: //