回调函数

[\"1\", \"2\", \"3\"].map(parseInt)

二次信任 提交于 2019-12-27 05:37:54
为什么["1", "2", "3"].map(parseInt) 为 1,NaN,NaN; parseInt() parseInt ( ) 函数可解析一个字符串,并返回一个整数。 parseInt(string, radix) 参数 描述 string 必需。要被解析的字符串。 radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果 省略该参数或其值为 ‘0‘,则数字将以 10 为基础来解析 。如果它以 ‘”0x”‘ 或 ‘”0X”‘ 开头,将以 16 为基数。 如果该参数 小于 2 或者大于 36,则 ‘parseInt()‘ 将返回 ‘NaN‘ 。 map 方法 对数组的每个元素调用定义的回调函数并返回包含结果的数组。 array.map(callbackfn, thisArg]) 参数 定义 array 必需。一个数组对象。 callbackfn 必需。一个接受**最多* *三个参数 的函数。对于数组中的每个元素,‘map‘ 方法都会调用 ‘callbackfn‘ 函数一次。 thisArg 可选。可在 ‘callbackfn‘ 函数中为其引用 ‘this‘ 关键字的对象。如果省略 ‘thisArg‘,则 ‘undefined‘ 将用作 ‘this‘ 值。 回调函数语法 回调函数的语法如下所示: function callbackfn(value,

C--回调函数

依然范特西╮ 提交于 2019-12-27 03:02:27
// #include <stdio.h> // typedef int(*Weapon)(int); // void fight(Weapon wp, int arg) // { // int result = 0; // printf("Fight boss!\n"); // result = wp(arg); // printf("Boss loss: %d\n", result); // } // int knife(int n) // { // int ret = 0; // int i = 0; // for(i=0; i<n; i++) // { // printf("Knife attack: %d\n", 1); // ret++; // } // return ret; // } // int sword(int n) // { // int ret = 0; // int i = 0; // for(i=0; i<n; i++) // { // printf("Sword attack: %d\n", 5); // ret += 5; // } // return ret; // } // int gun(int n) // { // int ret = 0; // int i = 0; // for(i=0; i<n; i++) // { // printf

Scrapy 爬虫模板--CrawlSpider

喜你入骨 提交于 2019-12-27 02:31:54
从这篇文章开始,我将利用三篇文章分别讲解 Scrapy 爬虫模板。 Scrapy 爬虫模板包含四个模板: Basic :最基本的模板,这里我们不会讲解; CrawlSpider XMLFeedSpider CSVFEEDSpider 这篇文章我先来讲解一下 CrawlSpider 模板。 零、讲解 CrawlSpider 是常用的 Spider ,通过定制规则来跟进链接。对于大部分网站我们可以通过修改规则来完成爬取任务。 CrawlSpider 常用属性是 rules * ,它是一个或多个 Rule 对象以 tuple 的形式展现。其中每个 Rule 对象定义了爬取目标网站的行为。 Tip:如果有多个 Rule 对象命中同一个链接,那么只有第一个 Rule 对象生效。 我们来看一下 Role 的语法: Rule ( link_extractor [ , callback = None ] [ , cb_kwargs = None ] [ , follow = None ] [ , process_links = None ] [ , process_request = None ] ) 参数解析: link_extractor:Link Extrator 对象,是一个正则表达式。主要定义了从网页中提取哪些元素作为继续跟进的链接; callback:回调函数

poll, select & epoll 原理比较分析

 ̄綄美尐妖づ 提交于 2019-12-26 23:46:52
因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了解一下Linux的设备访问机制,尤其是处理一组非阻塞IO的原理方法,标准的术语好像是叫多路复用。以下文章部分句子有引用之处,恕没有一一指出出处。 对于接触过Linux内核或设备驱动开发的读者,一定清楚poll和select系统调用,以及从2.5版本引入的epoll机制(epoll机制包含三个系统调用)。网上关于它们的文章,有说用法的,甚为详细,更有分析源代码的,又比较深入,且枝节颇多。经过几篇文章的阅读,我把觉得比较核心的东西写下来吧。我的用意是尽可能以简单的概念,比对他们三者的异同。 几经查找我才确定下来,poll和select应该被归类为这样的系统调用,它们可以阻塞地同时探测一组支持非阻塞的IO设备,是否有事件发生(如可读,可写,有高优先级的错误输出,出现错误等等),直至某一个设备触发了事件或者超过了指定的等待时间——也就是它们的职责不是做IO,而是帮助调用者寻找当前就绪的设备。同类型的产品是Windows的IOCP,它也是处理多路复用,只是把IO和探测封装在了一起了。 准备的知识有两点:1、fd;2、op->poll。 在Linux里面,设备都被抽象为文件,一系列的设备文件就有自己独立的虚拟文件系统,所以,设备在系统调用参数中的表示就是file description。fd其实就是一个整数(特别地,标准输入,输出

什么是回调函数?

你离开我真会死。 提交于 2019-12-26 20:38:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是回调函数? #1楼 我相信这种“回调”行话在很多地方被错误地使用。 我的定义是这样的: 回调函数是您传递给某人并让他们在某个时间点调用的函数。 我认为人们只是阅读了Wiki定义的第一句话: 回调是对可执行代码或一段可执行代码的引用,该代码作为参数传递给其他代码。 我一直在使用许多API,请参见各种不良示例。 许多人倾向于将函数指针(对可执行代码的引用)或匿名函数(可执行代码的一部分)命名为“回调”,如果它们只是函数,为什么还要为此命名呢? 实际上,Wiki定义中只有第二句话揭示了回调函数和普通函数之间的区别: 这允许较低层的软件层调用较高层中定义的子例程(或函数)。 所以区别在于您将要传递谁,以及传递的函数将如何被调用。 如果仅定义一个函数并将其传递给另一个函数并直接在该函数主体中调用它,则不要将其称为回调。 定义说您传入的函数将被“低级”函数调用。 我希望人们可以在模棱两可的上下文中停止使用此词,它不能帮助人们更好地理解,只会变得更糟。 #2楼 假设我们有一个函数 sort(int *arraytobesorted,void (*algorithmchosen)(void)) ,在这里它可以接受函数指针作为其参数,该指针可以在 sort() 的实现中使用。 然后,这里被函数指针

Ajax表单提交插件jquery form

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-26 09:45:42
jQuery Form插件是一个优秀的Ajax表单插件,我们可以非常容易的使用它处理表单控件的值,清空和复位表单控件,附件上传,以及完成Ajax表单提交(不用执行页面跳转)。jQuery Form有两个核心方法ajaxForm()和ajaxSubmit(),本文我们重点介绍ajaxSubmit()的应用。 查看演示DEMO 下载源码 HTML 首先我们载入jquery库和jquery.form.js插件。jquery.form.js插件的官网地址: http://www.malsup.com/jquery/form/ <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.form.min.js"></script> 然后,我们在页面的body中加入一个简单的表单代码: <form id="my_form" action="submit.php" method="post"> <p>姓名:<input type="text" name="uname" id="uname" class="input"></p> <p>性别: <input type="radio" name="sex" value="1" checked> 男 <input

jQuery使用ajax跨域获取数据

扶醉桌前 提交于 2019-12-25 20:06:53
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";     jQuery.support.cors = true;    //之前没有加这句老是提示no transport,我没去深想。 $.ajax ({ type: "POST", contentType: "application/x-www-form-urlencoded", dataType: "html", url: "http://www.*****.com", //这里是网址 success:function(data){alert(data);}, timeout:30000, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }); 参数 options 类型:Object 可选。AJAX 请求设置。所有选项都是可选的。 async 类型:Boolean 默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend(XHR) 类型:Function 发送请求前可修改

究竟什么是异步编程?

三世轮回 提交于 2019-12-25 18:54:39
  在我们的工作和学习当中,到处充满了异步的身影,到底什么是异步,什么是异步编程,为什么要用异步编程,以及经典的异步编程有哪些,在工作中的场景又有什么,我们一点点深入的去学习。   什么是异步编程?   有必要了解一下,什么是异步编程,为什么要异步编程。   先说一个概念异步与同步。介绍异步之前,回顾一下,所谓同步编程,就是计算机一行一行按顺序依次执行代码,当前代码任务耗时执行会阻塞后续代码的执行。   同步编程,即是一种典型的请求-响应模型,当请求调用一个函数或方法后,需等待其响应返回,然后执行后续代码。   一般情况下,同步编程,代码按序依次执行,能很好的保证程序的执行,但是在某些场景下,比如读取文件内容,或请求服务器接口数据,需要根据返回的数据内容执行后续操作,读取文件和请求接口直到数据返回这一过程是需要时间的,网络越差,耗费时间越长。   如果按照同步编程方式实现,在等待数据返回这段时间,JavaScript是不能处理其他任务的,此时页面的交互,滚动等任何操作也都会被阻塞,这显然是及其不友好,不可接受的,而这正是需要异步编程大显身手的场景。   我们想通过Ajax请求数据来渲染页面,这是一个在我们前端当中很常见渲染页面的方式。基本每个页面都会都这样的过程。在这里用同步的方式请求页面会怎么样?浏览器锁死,不能进行其他操作。而且每当发送新的请求,浏览器都会锁死,用户体验极差。

jQuery(八)、ajax

陌路散爱 提交于 2019-12-24 22:06:06
1、jQuery.ajax(url[, settings])   通过HTTP请求加载远程数据。   注意:所有的settings选择都可以通过$.ajaxSetup()函数来全局指定。    回调函数   在实际开发中,当我们需要处理$.ajax() 得到的数据,就需要使用到回调函数。   (1) beforeSend:在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。   (2) error:在发送请求出差时调用。传入 XMLHttpRequest 对象、描述错误类型的字符串以及一个异常对象。   (3) dataFilter:在请求成功之后调用。传入返回的数据以及 'dataType'参数的值。并且必须返回新的数据传递给success回调函数。   (4) success:请求发送成功,后台返回数据调用。   (5) complete:在请求完成之后调用,无论成功或失败。出入 XMLHttpRequest 对象,以及包含成功或失败代码的字符串。    settings选项   1 async    Boolean   默认为true,表示所有请求均为异步请求。如果要发送同步请求,将该属性设置为false。    2 beforeSend(XHR)    function function (XMLHttpRequest) { this; //

JQuery中$.ajax()方法参数详解

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