回调函数

ES6入门(七) 数组的扩展

≯℡__Kan透↙ 提交于 2020-02-28 04:34:10
数组的扩展 1.复制数组 扩展运算符提供了复制数组的简便写法。 const a1 = [1, 2]; // 写法一 const a2 = [...a1]; 2. 合并数组 扩展运算符提供了数组合并的新写法。 const arr1 = ['a', 'b']; const arr2 = ['c']; const arr3 = ['d', 'e']; // ES5 的合并数组 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ] // ES6 的合并数组 const newArr = [...arr1, ...arr2, ...arr3] console.log(newArr) // [ 'a', 'b', 'c', 'd', 'e' ] 3.Array.from() Array.from 方法用于将两类对象转为真正的数组 类数组对象的属性名必须为数值型或字符串型的数字,要将一个类数组对象转换为一个真正的数组,必须具备以下条件: 1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组 2、该类数组对象的属性名必须为数值型或字符串型的数字 该类数组对象的属性名可以加引号,也可以不加引号 const obj = { 0: 1, 1: '22', 2: false,

函数

淺唱寂寞╮ 提交于 2020-02-27 17:35:17
一.定义函数的两种方式 1.函数声明 //函数声明 function fn(x) { console.log(x) } 上述abs()函数的定义如下: function指出这是一个函数定义; abs是函数的名称; (x)括号内列出函数的参数,多个参数以,分隔; { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。 2.表达式 //表达式 var fn = function (x) { console.log(x) } 两种方式大体相同,除了变量提升。 二.函数的调用方式 1.直接调用 fn() 2.通过对象调用 obj.fn() 3.通过new关键字调用 new Fn(); 4.fn.call/apply(obj) 临时让fn成为obj的方法进行调用 var obj = {} function fn() { this.name = 'lili' } fn.call(obj) console.log(obj.name) //lili //总结:js的强大之处:可以让一个函数,成为任意对象的一个方法。 三.回调函数 1.回调函数的特点 (1)自己定义的(2)自己没有调用(3)函数却执行了 2.常见的回调函数 (1)事件回调函数(2)定时器内的回调函数 (3)ajax请求回调函数 (4)生命周期回调函数 //1、事件回调函数 document.onclick =

vue解决跨域问题

£可爱£侵袭症+ 提交于 2020-02-27 15:57:07
一.什么是跨域   跨域问题的出现是因为浏览器的同源策略问题,所谓同源:就是两个页面具有相同的协议(protocol),主机(host)和端口号(port),它是浏览器最核心也是最基本的功能,如果没有同源策略我们的浏览器将会十分的不安全,随时都可能受到攻击。 当我们请求一个接口的时候,出现如:Access-Control-Allow-Origin 字眼的时候说明请求跨域了 二.如何解决跨域问题   1.使用jsonp实现,网页通过script标签向服务器请求json数据,服务器受到请求后,将数据放在一个指定名字的回调函数的参数里面传给前端。 <script src="http://www.test.com/getData?callback=getData"></script> // 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字 // 处理服务器返回回调函数的数据 <script type="text/javascript"> // 服务器返回的数据会放到回调函数里面 function getData(res){ // 处理获得的数据 console.log(res.data) } </script>   2.使用Jquery ajax实现, $.ajax({ url: 'http://www.test.com:8888

线程传参数

六眼飞鱼酱① 提交于 2020-02-27 12:59:49
但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。 欲先取之,必先予之。一般在使用线程时都需要有一些初始化数据,然后线程利用这些数据进行加工处理,并返回结果。在这个过程中最先要做的就是向线程中传递数据。 一、通过构造方法传递数据 在创建线程时,必须要建立一个Thread类的或其子类的实例。因此,我们不难想到在调用start方法之前通过线程类的构造方法将数据传入线程。并将传入的数据使用类变量保存起来,以便线程使用(其实就是在run方法中使用)。下面的代码演示了如何通过构造方法来传递数据: package mythread; public class MyThread1 extends Thread { private String name;

nodejs-基本语法

北慕城南 提交于 2020-02-27 11:53:56
初识nodejs-基本语法 nodejs是JavaScript的一个在后端的运行环境,关于nodejs的认识,我们可以看上一篇文章<<初识nodejs>>,我们要使用nodejs,首先要安装nodejs,安装的东西你可理解为java中的运行环境一样,至于怎么安装,我们最好安装nvm(nodejs version manage),安装的过程也写在了另一篇博客<>(那时懵懂期,回头再修改的详细一点) 那么nodejs作为一个后台的平台,他可以为我们提供的很多,我们可以用JavaScript语言进行文件的获取,删除等等文件操作,我们可以用JavaScript开一个本地服务器,我们可以和mongoDB配合来搭建后台,他给我们前端带来了太多的惊喜,让我们深深的迷恋上了它,但正所谓学一个新知识时,我们都需要从简,从基础学起,那么在nodejs环境下,我们的基本语法又是怎样的呢? 模块 nodejs是支持ES6的,所以在这里你可以尽情的去写,不用考虑浏览器不兼容了(这里是后端,哈哈),安装好了nodejs后,我们在终端输入node,就会进入到nodejs环境,这里我们可以输入: console.log("hello world!"); 可以看到我们控制台输出了hello world,我第一次写的时候还以为这是chrome的开发者模式呢,这或许就是chrom v8引擎的作用吧

Jquery ajax参数设置

对着背影说爱祢 提交于 2020-02-27 04:48:19
参数名 类型 描述 url String ( 默认 : 当前页地址 ) 发送请求的地址。 type String ( 默认 : "GET") 请求方式 ("POST" 或 "GET") , 默认为 "GET" 。注意:其它 HTTP 请求方法,如 PUT 和 Delete 也可以使用,但仅部分浏览器支持。 timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。 async Boolean ( 默认 : true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false 。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。 XMLHttpRequest 对象是唯一的参数。 function (XMLHttpRequest) { this ; // the options for this ajax request } cache Boolean ( 默认 : true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。 complete Function 请求完成后回调函数 ( 请求成功或失败时均调用 ) 。参数: XMLHttpRequest 对象

Javascript中的异步编程

人走茶凉 提交于 2020-02-26 09:06:15
Javascript最开始是用于浏览器中的前端编程语言。Javascript是单线程的,为了能及时响应用户操作,javascript对耗时操作(如Ajax请求、本地文件读取等)的处理是异步进行的,也即是所谓的异步编程。除了快速响应用户操作之外,另外一个让javascript采用异步方式的原因是,程序无法预知用户会进行哪些操作。比如说程序无法提前知道用户是点“取消”按钮还是“确定”按钮。所以,Javascript采用了事件注册的方式来处理这个问题。在程序编写时,可以给用户点击“取消”按钮和“确认”按钮注册不同的回调函数,这样当用户点击不同的按钮时,不同的回调函数会被执行。本文从回调函数开始,介绍了Promise、async/await几种Javascript主要的异步编程方式。 异步编程和回调函数 无论是Ajax请求,还是事件处理,Javascript都是通过回调函数来完成的。谈及异步编程和回调函数,可以回想一下操作系统中的中断及中断处理程序。由于CPU的速度比外设快出许多,为了提高CPU的处理效率,计算机系统引入了中断的概念,外设在读写数据的时候,CPU可以忙别的事情,等到外设读写完数据后,会给CPU发一个中断信号,CPU就可以来执行已经注册好的、相应的中断处理程序。Javascript中的回调函数和中断处理程序都是类似的原理。 先来看一个异步的例子: console.log(

【前端学习】Node.js中FS模块(File System)常用API

≯℡__Kan透↙ 提交于 2020-02-24 14:04:26
文章目录 ·创建文件 ·读取文件 ·删除文件 ·重命名 ·创建文件夹 ·删除文件夹 ·读取文件夹 ·判断目标是文件还是文件夹 ·删除非空目录 File system:文件系统,用于操作文件与文件夹 ·创建文件 fs.appendFile(filePath, content, callback); filePath: 文件路径 content: 文件内容 callback: 回调函数 回调函数中有err 表示创建过程中可能出现的异常 该方法有两种用法,第一种创建文件(当文件不存在时),第二种追加内容(当文件已经存在时) ·读取文件 fs.readFile(filePath, callback); filePath: 文件路径 callback: 回调函数 err: 读取过程中可能发生的错误 没错误时 err是null 有错误时 err时错误对象 data: 读取到的文件内容 它的类型时buffer ·删除文件 fs.unlink(filePath, callback); filePath: 被删除的文件的地址 callback: 回调函数 · ·重命名 fs.rename(oldPath, newPath, callback); oldPath: 原路径 newPath: 新路径 callback: 回调函数 ·创建文件夹 fs.mkdir(dirPath, callback);

爬虫性能相关

橙三吉。 提交于 2020-02-24 13:32:18
爬虫信息相关 这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据,我们首先想到的是循环 简单的循环串行 这一种方法相对来说是最慢的,因为一个一个循环,耗时是最长的,是所有的时间总和 代码如下: import requests url_list = [ 'http://www.baidu.com', 'http://www.pythonsite.com', 'http://www.cnblogs.com/' ] for url in url_list: result = requests.get(url) print(result.text) 通过线程池 通过线程池的方式访问,这样整体的耗时是所有连接里耗时最久的那个,相对循环来说快了很多 import requests from concurrent.futures import ThreadPoolExecutor def fetch_request(url): result = requests.get(url) print(result.text) url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ThreadPoolExecutor(10)

React-Redux之API

北城以北 提交于 2020-02-24 10:21:01
connect ( [mapStateToProps ] , [mapDispatchToProps ] , [mergeProps ] , [options ] ) 连接 React 组件与 Redux store。 连接操作不会改变原来的组件类,反而 返回 一个新的已与 Redux store 连接的组件类。 参数 [ mapStateToProps (state , [ownProps ] ) : stateProps ] ( Function ): 如果定义该参数,组件将会监听 Redux store 的变化。任何时候,只要 Redux store 发生改变, mapStateToProps 函数就会被调用。该回调函数必须返回一个纯对象,这个对象会与组件的 props 合并。如果你省略了这个参数,你的组件将不会监听 Redux store。如果指定了该回调函数中的第二个参数 ownProps ,则该参数的值为传递到组件的 props,而且只要组件接收到新的 props, mapStateToProps 也会被调用。 [ mapDispatchToProps (dispatch , [ownProps ] ) : dispatchProps ] ( Object or Function ): 如果传递的是一个对象,那么每个定义在该对象的函数都将被当作 Redux action