回调函数

html--Ajax

不羁岁月 提交于 2019-12-09 19:06:42
1、下载引入jQuery 2、如果是get请求,就把参数,放在url里,如果是post,就直接放在body,回调函数:收到回复消息后,自动调用回调函数。arg是回复的消息 $.ajax({   url:'/add_classes.html',,   type:'POST',   data:{'username':'root','password':'123'}   sussess:function(arg){     //回调函数,   } }) 来源: https://www.cnblogs.com/ljf520hj/p/12012842.html

sync.Map(在并发环境中使用的map)

本小妞迷上赌 提交于 2019-12-09 18:51:36
sync.Map 有以下特性: 需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 sync 包下的特殊结构。 无须初始化,直接声明即可。 sync.Map 不能使用 map 的方式进行取值和设置等操作,而是使用 sync.Map 的方法进行调用,Store 表示存储,Load 表示获取,Delete 表示删除。 使用 Range 配合一个回调函数进行遍历操作,通过回调函数返回内部遍历出来的值,Range 参数中回调函数的返回值在需要继续迭代遍历时,返回 true,终止迭代遍历时,返回 false。 并发安全的 sync.Map 演示代码如下: package main ​ import ( "fmt" "sync" ) ​ func main() { ​ var scene sync.Map ​ // 将键值对保存到sync.Map scene.Store("greece", 97) scene.Store("london", 100) scene.Store("egypt", 200) ​ // 从sync.Map中根据键取值 fmt.Println(scene.Load("london")) ​ // 根据键删除对应的键值对

NodeJs 之 回调函数

风格不统一 提交于 2019-12-09 16:46:19
前言 说到回调函数,可能大家都会想到异步编程的首选解决方案 9102,更多的异步编程方案层出不穷,典型的代表就是 promise ,async await 不扯远了,回到NodeJs 。 Node.js 异步编程的直接体现就是回调,回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如:我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回,这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求 。 这里边有一个关键词 I/O , 说到 I/O 很多童鞋可能不太理解什么是 I/O , I/O 其实是 输入/输出(Input/Output) ,可自行百度百科一下,从这里再说到同步I/O,异步I/O 可能大家就能明白了。 同步 I/O 阻塞 , 同步输入输出 异步 I/O 不阻塞, 异步输入输出 如果有童鞋不太理解同步/异步这个问题,建议自行学习一下哈 ~ 回归正题,回调函数 一般,回调函数作为函数的最后一个参数出现,例如: function foo ( name , age , callback ) { } // callback 就是回调函数 我们来通过同步I/O,异步I/O实例来实践一下: 创建一个阻塞的同步I/O实例

jquery的$.ajax()属性及用法

别来无恙 提交于 2019-12-09 12:32:07
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。 4.async: 要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。 5.cache: 要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。 6.data: 要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看  processData选项。对象必须为key/value格式,例如{foo1:“bar1”,foo2:“bar2”}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:[

Scrapy之Spider

女生的网名这么多〃 提交于 2019-12-08 14:00:41
Spider Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。 class scrapy.Spider 是最基本的类,所有编写的爬虫必须继承这个类。 主要用到的函数及调用顺序为: __init__() : 初始化爬虫名字和start_urls列表 start_requests() 调用make_requests_from url() :生成Requests对象交给Scrapy下载并返回response parse() : 解析response,并返回Item或Requests(需指定回调函数)。 Item传给Item pipline持久化 , 而Requests交由Scrapy下载,并由指定的回调函数处理(默认parse()),一直进行循环,直到处理完所有的数据为止。 源码参考 #所有爬虫的基类,用户定义的爬虫必须从这个类继承 class Spider(object_ref): #定义spider名字的字符串(string)。spider的名字定义了Scrapy如何定位(并初始化)spider,所以其必须是唯一的。 #name是spider最重要的属性,而且是必须的。 #一般做法是以该网站(domain)

scrapy之CrawlSpiders

谁说我不能喝 提交于 2019-12-08 14:00:35
CrawlSpiders 通过下面的命令可以快速创建 CrawlSpider模板 的代码: scrapy genspider -t crawl loaderan cnblogs.com class scrapy.spiders.CrawlSpider 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。 源码参考 class CrawlSpider(Spider): rules = () def __init__(self, *a, **kw): super(CrawlSpider, self).__init__(*a, **kw) self._compile_rules() #首先调用parse()来处理start_urls中返回的response对象 #parse()则将这些response对象传递给了_parse_response()函数处理,并设置回调函数为parse_start_url() #设置了跟进标志位True #parse将返回item和跟进了的Request对象 def parse(self, response): return self._parse_response(response,

ES5给object扩展的一些静态方法

雨燕双飞 提交于 2019-12-08 13:05:31
1. Object.create(prototype[, descriptors]) : 创建一个新的对象 1). 以指定对象为原型创建新的对象 2). 指定新的属性, 并对属性进行描述 value : 指定值 writable : 标识当前属性值是否是可修改的, 默认为true get : 用来得到当前属性值的回调函数 set : 用来监视当前属性值变化的回调函数 <!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> </head> <body> <script> 'use strict' // 1. Object.create(prototype,[descriptors]) // 作用:以指定对象作为原形的创建的新对象 // 为新的对象指定新的属性,并对属性进行描述 // value:指定值 // writable 标识当前属性是否可以被修改,默认为false // configurable

lambda表达式的实质——什么是lambda表达式,为什么要使用lambda表达式

冷暖自知 提交于 2019-12-08 07:57:28
lambda表达式是C++ 11的新特性。它是一个匿名函数,但是又跟函数不同。要想理解lambda表达式,特别是为什么要使用lambda表达,首先要理解回调函数。如果不太理解回调函数请戳 这里 。简而言之,回调函数就是被作为参数供另一个函数调用的函数(注意不是函数的返回值被另一个函数调用,而是函数的指针或者说代码被另一个函数调用)。比如void funcA(int i, bool (*funcB)(int))。 这里函数funcA有两个参数,一个是i,另一个就是函数funcB的指针。我们知道在声明一个函数时,函数参数的数据类型就确定了。所以如果要调用funcA,那么我们传递给它的参数必须是两个,一个是整型,另一个是以整型为参数以布尔型为返回值的函数类型(函数的类型由它的参数类型和返回值类型决定)。所以,我们在实现回调函数funcB时,必须按照这个参数和返回类型来实现。这就会带来一定的局限性。比如,我想让我的函数funcB更具普适性,让它多带一个参数以适应不同的情况,变成bool myFuncB(int i, int j)。那么它就不能作为参数被funcA调用了。这时lambda表达式就可以粉墨登场了。lambda表达式语法如下所示: [capture list](parameter list)->return type{function body} 其中

JS闭包函数和回调函数

僤鯓⒐⒋嵵緔 提交于 2019-12-07 15:55:00
一、闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。闭包就是能够读取其他函数内部变量的函数。可以把闭包简单理解成”定义在一个函数内部的函数”。 闭包有三个特性: 1.函数嵌套函数; 2.函数内部可以引用外部的参数和变量; 3.参数和变量不会被垃圾回收机制回收。 闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。使用闭包有一个优点,也是它的缺点,就是可以把局部变量驻留在内存中,可以避免使用全局变量。全局变量在每个模块都可调用,这势必将是灾难性的。所以推荐使用私有的,封装的局部变量。一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同! 示例一: //闭包就是一个函数的返回值为另外一个函数,在outer外部可以通过这个返回的函数访问outer内的局部变量. function outer () { var val = 0 ; return function () { val += 1 ; document.write(val + "<br />" ); }; } var outObj = outer(); outObj(); //1,执行val += 1后,val还在 outObj(); //2

回调函数

风格不统一 提交于 2019-12-07 15:42:26
一、什么是回调   软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口) 。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。 二、C语言中的回调   回调在C语言中是通过函数指针来实现的,通过将回调函数的地址传给被调函数从而实现回调。因此,要实现回调,必须首先定义函数指针:   void func(char *s); //函数原型   void (*pfunc)(char *); //函数指针   一般为了简化函数指针类型的变量定义,提高程序的可读性,我们需要把函数指针类型自定义一下。   typedef void(*pcb)(char *);   回调函数可以像普通函数一样被程序调用,但是只有它被当作函数参数给被调函数时才能称作回调函数。   例:    void GetCallBack(pcb callback) {   /*do something*/ } 用户在调用上面的函数时