回调函数

curl 参数配置详解

匆匆过客 提交于 2019-12-03 13:21:22
第一类: 对于下面的这些option的可选参数,value应该被设置一个bool类型的值: CURLOPT_AUTOREFERER 当根据Location:重定向时,自动设置header中的Referer:信息。 CURLOPT_BINARYTRANSFER 在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出。 CURLOPT_COOKIESESSION 启用时curl会仅仅传递一个session cookie,忽略其他的cookie,默认状况下cURL会将所有的cookie返回给服务端。session cookie是指那些用来判断服务器端的session是否有效而存在的cookie。 CURLOPT_CRLF 启用时将Unix的换行符转换成回车换行符。 CURLOPT_DNS_USE_GLOBAL_CACHE 启用时会启用一个全局的DNS缓存,此项为线程安全的,并且默认启用。 CURLOPT_FAILONERROR 显示HTTP状态码,默认行为是忽略编号小于等于400的HTTP信息。 CURLOPT_FILETIME 启用时会尝试修改远程文档中的信息。结果信息会通过 curl_getinfo()函数的CURLINFO_FILETIME选项返回。curl_getinfo(). CURLOPT_FOLLOWLOCATION 启用时会将服务器服务器返回的

什么是回调函数?回调函数适合在什么情况下使用?

佐手、 提交于 2019-12-03 12:11:07
一直不太理解回调函数的作用,下面是找到的一些关于回调函数的作用的解答。 1.回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。 2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于系统调用。 3.所谓回调函数就是按照一定的形式由你定义并编写实现内容,当发生某种事件时,而由系统或其它函数来调用的函数。使用回调函数实际上就是在调用某个函数时,将自己编写的一个函数的地址作为参数传递给那个函数。而那个函数在需要的时候,也就是某种事情发生的时候,利用传递的函数地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。回调函数只能是全局函数,或者是静态函数,因为这个函数只是在这个类中使用,所以为了维护类的完整性,我们用类的静态成员函数来做回调函数。 4.对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 (1)什么是回调函数?    简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数

JS杂学笔记

风流意气都作罢 提交于 2019-12-03 11:09:12
1.数组扁平化 let arr=[1,[2,3,[4,5]],6] let str=JSON.stringify(arr)   调用ES6中的flat方法 arr=arr.flat(Infinity)   replace + split ary = str.replace(/(\[|\])/g, '').split(',')   replace + JSON.parse str = str.replace(/(\[|\]))/g, ''); str = '[' + str + ']'; ary = JSON.parse(str);   普通递归 let result = []; let fn = function(ary) { for(let i = 0; i < ary.length; i++) { let item = ary[i]; if (Array.isArray(ary[i])){ fn(item); } else { result.push(item); } } }   利用reduce函数迭代 function flatten(ary) { return ary.reduce((pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur); }, []); } let ary =

回调函数

放肆的年华 提交于 2019-12-03 07:57:34
回调函数最多的应用场景就是异步操作,因为异步的操作我们不知道这个操作到底何时结束,那么我们后续执行的代码就无法按照应有的流程走下去。 JS中的回调函数实例浅析 地址===》https://m.jb51.net/article/136848.htm <script type="text/javascript"> function demo(a,b,callback){ let c=a+b; callback(c); }; demo(1,2,function(c){ alert(c);//3 }) 来源: https://www.cnblogs.com/IwishIcould/p/11784009.html

防抖和节流(较全&可体验)

泪湿孤枕 提交于 2019-12-03 07:40:30
防抖(debounce) 概念 事件被触发经过单位时间(delay)后再执行回调,如果在单位时间内又被触发,则重新计时。 防抖函数 const debounce = (cb, delay = 1000) => { let timer = null; return function (...args) { const context = this; if (timer) clearTimeout(timer); timer = setTimeout(() => { cb.apply(context, args); timer = null; }, delay); } } 若延迟delay设置为1000(默认值),则cb(回调函数)只会在停止触发1s后执行,如果一直不断地触发,则回调函数始终不执行。 使用 下面是一个简单的使用示例,后续介绍的防抖和节流函数的使用方式也是相似的。 const callback = () => { console.log(Math.random()); } const handle = debounce(callback, 1000); window.addEventListener('scroll', handle); 防抖函数(第一次触发会立即执行) const debounceImmediate = (cb, delay = 1000,

JS事件循环机制(event loop)之宏任务/微任务

狂风中的少年 提交于 2019-12-03 07:33:31
本文转载于: 猿2048 网站⇒ https://www.mk2048.com/blog/blog.php?id=h22hi0h0kj 标签: eventloop 事件机制 node 原文地址: Tasks, microtasks, queues and schedules 鉴于上篇文章有提到过 微任务与宏任务,所以,在此做个细致补充: 话不多说,直接进入正文: [1] 本文主要根据网上资源总结而来,如有不对,请斧正。 [2] 需要知道的专业名词术语:synchronous:同步任务、asynchronous:异步任务、task queue/callback queue:任务队列、execution context stack:执行栈、heap:堆、stack:栈、macro-task:宏任务、micro-task:微任务 首先我们要知道两点: JavaScript是单线程的语言 Event Loop是javascript的执行机制 javascript事件循环 js是单线程,就像学生排队上厕所,学生需要排队一个一个上厕所,同理js任务也要一个一个顺序执行。如果一个任务耗时过长,那么后一个任务也必须等着。那么问题来了,假如我们想浏览新闻,但是新闻包含的超清图片加载很慢,难道我们的网页要一直卡着直到图片完全显示出来?因此聪明的程序员将任务分为两类: 同步任务 异步任务 从图片可知

JavaScript中的数组Array

廉价感情. 提交于 2019-12-03 05:30:47
抄自: https://www.jianshu.com/p/7e160067a06c js中数组的方法种类众多,有ES5之前版本中存在的,ES5新增,ES6新增等;并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中原型上的方法。 一、创建数组的方式 1. 字面量方式 var arr1 = []; //创建一个空数组 var arr2 = [5]; //创建一个具有单个元素的数组 var arr3 = [5,6,7]; //创建一个具有多个元素的数组 2. 构造函数方式 var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(5); //创建一个长度为5,值为空的数组 var arr3 = new Array(5,6,7); //创建一个具有多个元素的数组 二、数组方法 //方法名 对应的版本 功能 原数组是否修改 concat() ES5- 合并数组,并返回合并之后的数据 n join() ES5- 使用分隔符,将数组转为字符串并返回 n pop() ES5- 删除最后一位,并返回删除的数据 y shift() ES5- 删除第一位,并返回删除的数据 y unshift() ES5- 在第一位新增一或多个数据,返回长度 y push() ES5- 在最后一位新增一或多个数据,返回长度 y

Promise 对象

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

OpenGL学习入门之VS2010环境配置 [转]

本小妞迷上赌 提交于 2019-12-03 03:04:59
OpenGL 开发环境简介    基于 OpenGL 标准开发的应用程序运行时需有动态链接库 OpenGL32.DLL 、 Glu32.DLL ,这两个文件在安装 Windows NT 时已自动装载到 C : \WINDOWS\SYSTEM32 目录下 ( 这里假定用户将 Windows NT 安装在 C 盘上 ) 。 OpenGL 的图形库函数封装在动态链接库 OpenGL32.DLL 中,开发基于 OpenGL 的应用程序,必须先了解 OpenGL 的库函数。 OpenGL 函数命令方式十分有规律,每个库函数均有前缀 gl 、 glu 、 aux ,分别表示该函数属于 OpenGL 基本库、实用库或辅助库。 Windows NT 下的 OpenGL 包含了 100 多个核心函数,均以 gl 作为前缀,同时还支持另外四类函数: OpenGL 实用库函数: 43 个,以 glu 作为前缀; OpenGL 辅助库函数: 31 个,以 aux 作为前缀; Windows 专用库函数 (WGL) : 6 个,以 wgl 作为前缀; Win32API 函数 (WGL) : 5 个,无前缀。    安装 GLUT 工具包    GLUT 不是 OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows 环境下的 GLUT 下载地址:(大小约为 150k ) http

Promise相关

≯℡__Kan透↙ 提交于 2019-12-03 02:37:55
Promise相关 关于异步: 出现背景: 由于JS是单线程语言,因此所有网络操作、浏览器事件都必须是异步执行的。 异步解决方案: 方案一:回调函数方式(注册-执行异步任务-触发回调函数) 原理: 浏览器解释执行js代码过程中,遇到异步任务,首先在系统中挂起(异步队列中注册回调函数),当异步任务(eg:I/O,网络请求等操作完成之后),通过触发回调函数的方式完成整个异步操作。 异步的问题: 传统采用回调函数处理异步任务的方式可以处理问题,但可能进入回调地狱,剥夺return的权利 回调方式,代码嵌套层次深,易读性差,且不易维护 场景: setTimeOut ajax请求 方案二:Promise方式 概念: Promise是一个对象:承诺将来会执行的对象(代表异步操作最终成功或者失败) promise作为队列最为重要的特性,我们在任何一个地方生成了一个promise队列之后,我们可以把他作为一个变量传递到其他地方。 三种状态:pending、fulfilled、rejected 两类函数:resolve(),将pending状态变为fulfilled状态,rejecte(),将pending状态变为rejected状态 thenable对象:具有特定格式then属性的对象 约定(与传统回调函数不同): 本轮Event Loop完成之前,回调函数不会被调用 then函数总会被调用