回调函数

NodeJS事件环

喜欢而已 提交于 2019-12-04 13:33:00
1. 执行顺序说明 1. 清空主执行栈 2. 清空微任务队列 3. 运行一个timer队列的回调函数,询问微任务队列,如果有回调函数,清空。 4. 循环第3步,直到清空timer队列 5. 进入poll队列,执行poll队列的回调函数,询问微任务队列,清空微任务队列。 6. 循环第5步,清空poll队列 7.清空check队列 8. 从第2步再次循环 示例1: setTimeout(() => { console.log('timeout') }) setImmediate(() => { console.log('immediate') }) // node命令执行后,根据运行环境不同,先后顺序不一定。 // 如果setTimout回调函数先进入队列,先执行;否则setImmediate先执行 来源: https://www.cnblogs.com/lyraLee/p/11867953.html

libevent笔记2:Hello_World

断了今生、忘了曾经 提交于 2019-12-04 12:04:46
本篇通过libevent提供的Hello_World demo简单介绍基于libevent的TCP服务器的实现 listener listener是libevent提供的一种监听本地端口的数据结构,在有客户端的连接到来时调用给定的回调函数。 bufferevent 上一篇 中的event是不带缓存区的,读写直接在文件描述符所指向的对象(上一节中是有名管道)上进行。bufferent则是带缓冲区的event,对bufferevnet的读写操作不会直接作用在I/O上,而是对输入或输出缓存区操作。对bufferevent的读操作会从文件描述符相应的输入缓存区读数据;而写操作会将数据写进文件描述符相应的输出缓存区。 Hello_World 以下是官网提供的demo #include <string.h> #include <errno.h> #include <stdio.h> #include <signal.h> #ifndef _WIN32 #include <netinet/in.h> # ifdef _XOPEN_SOURCE_EXTENDED # include <arpa/inet.h> # endif #include <sys/socket.h> #endif #include <event2/bufferevent.h> #include <event2/buffer

ajax

拥有回忆 提交于 2019-12-04 11:04:39
ajax 是 Asynchronous JavaScript and XML的简写,ajax一个前后台配合的技术,它可以让 javascript 发送异步的 http 请求,与后台通信进行数据的获取,ajax 最大的优点是实现局部刷新,ajax可以发送http请求,当获取到后台数据的时候更新页面显示数据实现局部刷新,在这里大家只需要记住,当前端页面想和后台服务器进行数据交互就可以使用ajax了 jquery将它封装成了一个方法$.ajax(),我们可以直接用这个方法来执行ajax请求 <script> $.ajax({ // 1.url 请求地址 url:'http://t.weather.sojson.com/api/weather/city/101010100', // 2.type 请求方式,默认是'GET',常用的还有'POST' type:'GET', // 3.dataType 设置返回的数据格式,常用的是'json'格式 dataType:'JSON', // 4.data 设置发送给服务器的数据, 没有参数不需要设置 ​ // 5.success 设置请求成功后的回调函数 success:function (response) { console.log(response); }, // 6.error 设置请求失败后的回调函数 error:function ()

PHP常用单词

怎甘沉沦 提交于 2019-12-04 09:17:20
(一) 原始数据类型。 A. 四种标量类型: a) boolean (布尔型) b) integer (整型) c) float (浮点型,也称作 double ) d) string (字符串) B. 两种复合类型: a) array (数组) b) object (对象) C. 特殊类型: a) resource (资源) b) NULL (无类型) D. 伪类型 : a) mixed (混合类型) b) number (数字类型) e) callback (回调类型) (二) 常用内部函数: A. 字符串函数: f) 输出与格式化:echo print printf print_r var_dump. g) 字符串去除与填充:trim ltrim rtrim str_pad h) 字符串连接与分割:implode join explode str_split i) 字符串截取:substr strchr strrchr, j) 字符串替换:str_replace substr_replace k) 字符串长度与位置: strlen strpos strrpos l) 字符转换:strtolower strtoupper lcfirst ucfirst ucwords m) 特殊字符处理:nl2br addslashes htmlspecialchars

动手写一个简单的promise

五迷三道 提交于 2019-12-04 07:06:34
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象。 所谓 Promise ,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。 Promise 对象有以下两个特点。 (1)对象的状态不受外界影响。 Promise 对象代表一个异步操作,有三种状态: pending (进行中)、 fulfilled (已成功)和 rejected (已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。 (2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。 Promise 对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对 Promise 对象添加回调函数

requestAnimationFrame

爷,独闯天下 提交于 2019-12-04 06:08:00
实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的API,那就是 requestAnimationFrame,顾名思义就是 请求动画帧。 屏幕刷新频率: 屏幕每秒出现图像的次数。普通笔记本为60Hz 动画原理: 计算机每16.7ms刷新一次,由于人眼的视觉停留,所以看起来是流畅的移动。 setTimeout: 通过设定间隔时间来不断改变图像位置,达到动画效果。但是容易出现卡顿、抖动的现象;原因是:1、settimeout任务被放入异步队列,只有当主线程任务执行完后才会执行队列中的任务,因此实际执行时间总是比设定时间要晚;2、settimeout的固定时间间隔不一定与屏幕刷新时间相同,会引起丢帧。 requestAnimationFrame: 优势:由系统决定回调函数的执行时机。60Hz的刷新频率,那么每次刷新的间隔中会执行一次回调函数,不会引起丢帧,不会卡顿 使用: var progress = 0; //回调函数 function render() { progress += 1; //修改图像的位置 if (progress < 100) { //在动画没有结束前

jquery表单验证插件 jquery.form.js

社会主义新天地 提交于 2019-12-04 05:56:49
Form插件,支持Ajax,支持Ajax文件上传,功能强大,基本满足日常应用。 1.JQuery框架软件包下载 http://docs.jquery.com/Downloading_jQuery 2. Form插件下载 https://github.com/malsup/form/blob/master/jquery.form.js 3、Form插件的简单入门 第一步:先增加一个表单 <form id="myForm" action="comment.php" method="post"> Name: <input type="text" name="name" /> Comment: <textarea name="comment"></textarea> <input type="submit" value="Submit Comment" /> </form> 第二步:jquery.js和form.js文件的包含 <head> <script type="text/javascript" src="path/to/jquery.js"></script> <script type="text/javascript" src="path/to/form.js"></script> <script type="text/javascript"> // wait for the

JQuery AJAX 方法总结:

倖福魔咒の 提交于 2019-12-04 05:55:15
JQuery中主要AJax方法: 一、load: $(selector).load(url,[data],[callback]);从服务器中加载数据并将返回数据放入被选元素中。 参数含义: url : 为希望加载URL,可以将JQuery的选择器添加到URL参数中。 data:为请求传入的参数,为键值对 callback :success(data,status,xhr) (请求成功时才调用回调函数,失败的处理需要使用ajax函数) data: 包含调用成功时的结果内容 status: 为调用状态,成功时返回"success",失败时返回"error" xhr: 返回XMLHttpRequest对象,根据该对象可获取 readyState 和 statues 通过查看源码可知load 的本质是通过ajax方法来实现,默认为GET方法,如果第二个参数params为函数则用GET方法,如果为对象则为POST方法。 例: 1.function handleclick() { $("#responsediv").load("server.php",function(responsTxt,statusTxt,xhr){ if(statusTxt === "error") this.innerHTML="Error!"; }); } 发送方式为GET: 2.function

Vue.js watch监视属性

China☆狼群 提交于 2019-12-04 04:51:58
这个属性用来监视某个数据的变化,并触发相应的回调函数执行 1.基本用法 (1)添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值发生变化,就会触发该回调函数执行 (2)回调函数有2个参数: newVal:数据发生改变后的值 oldVal:数据发生改变前的值 var vm = new Vue({ el:'#app', data: { name: '郭靖' }, watch: { name(newVal,oldVal){ console.log('name的值发生了变化') console.log(newVal,oldVal) } } }) vm.name = "郭大侠" // 执行这行代码,会触发对应的回调函数 执行结果: name的值发生了变化 郭大侠 郭靖 2.监听对象内部属性的变化 前面的例子只是监听data中的第一层数据,如果要监听多层次的数据,例如a.b.c,则属性名需要用引号包裹起来 <body> <div id="app"> <p>{{name}}</p> <button @click="test">修改wife.name</button> <button @click="test2">修改wife</button> </div> </body> <script> var vm = new Vue({ el:'

数组的方法

可紊 提交于 2019-12-04 04:39:51
1.concat() 合并数组 0个或多个参数 返回值 返回新的数组。 (数组中的方法有浅拷贝也有深拷贝) 深拷贝方法 浅拷贝 :返回的新的数组,发生改变会影响原来数组的数组,这叫浅拷贝。 深拷贝 :返回的新的数组发生改变,原来的数组不会跟着改变,这叫深拷贝。 2.Constructor() 构造器 指向对象的父类 3.CopWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置 4.Entries() 返回数组的可迭代对象 5.Every() 检测数组中的元素是否都 满足某个条件,都满足返回 true ,只要有一个不满足返回 false 参数,第一个参数是回调函数,第二个是数值对象 ( 改变函数中的 this 指向 ) 返回值 true 和 false 6.Fill() 7.Filter() 对数组中的元素进行过滤,将符合条件的元素保留,并返回构成一个新的数组。 参数 第一个参数是回调函数,第二个是数值对象 ( 用来修改函数中的 this 指向 ) 返回值是过滤后的新数组 深拷贝 8.Find() 使用一个固定值来填充对象 9.FindIndex() 10.Flat() 11.FlatMap() 12.ForEach() 数组中的每个元素都执行一次回调函数,没有返回值,改变原数组。 参数第一个是回调函数 第二个是数值对象 ( 可省略 ) 没有返回值 浅拷贝 跟 for