回调函数

JS内置对象方法——array

拥有回忆 提交于 2020-01-25 01:50:56
  最近,感觉JS有些方法忘记了,这几天会抽空复习的,先从数组方法开始,然后是字符串方法,然后Math方法,在Data方法。   我尽可能的全面,但有些真的忘了,甚至忘得连一点印象也没了。   array方法:     ES6:         find:参数为回调函数,回调函数可以接收3个参数,值x,索引 i,数组arr,回调函数默认返回值x;         findIndex:和find差不多,不过默认返回索引;         includes:和String的includes一样,接收2参数,查询的项以及查询起始位置;         keys:对数组索引进行遍历;         values:对数组项进行遍历;         entries:对数组键值进行遍历;         fill:方法改变原数组,当第三个参数大于数组长度的时候,以最后一位为结束位置;         Array.of():永远返回一个数组,参数不分类型,只分数量,数量为0返回空数组;         copyWithin:接收三个参数,被替换数据的开始处,替换块的开始处,替换块的结束处;copyWithin(s,m,n);         Array.form():可以吧带有lenght属性类似数组的对象转换为数组,也可以吧字符串等可以遍历的对象转换为数组,它接收2个参数,转换对象与回调函数

mooc 2020/1/22笔记

社会主义新天地 提交于 2020-01-25 00:21:14
阿里图标字体库 https://www.iconfont.cn/ 这种iconfont的写法 第一种写进class里面的CSS,比较直观,但是不支持IE6 第二种是手动添加Unicode 即 添加样式:下拉箭头旋转 (兼容各个浏览器) 包含各个下拉箭头的旋转 添加过渡效果 transition属性 下拉层动作模块化 构建框架 添加方法 调用 新要求: 在图片显示前添加P标签,显示文字内容,图片显示后添加内容。 直接将动作写入显示隐藏模块,耦合在一起,不方便修改。 所以通过 回调函数的方式 更加合理 传递回调函数callback作为参数 这种回调函数的方式很常用,但是却不适合多人协作。 所以我们常用 发布订阅 的方式。 trigger 发布事件 on订阅事件 多人协作的方式,发布订阅互不干扰。 光这样写还存在一些问题,即使在显示状态下也会不断触发。 所以需要为jquery对象绑定相应的 状态 ,避免重复触发,造成性能浪费。 如图: 当然了,还要对状态进行判断。 这样做还不够,因为页面刚刷新开始的时候,元素并未触发silent下面的show方法,也就是在默认显示的情况下并没有被赋予相应的状态,第一次点击还是会触发show。 所以需要初始化(init) 同时先执行一次 来源: CSDN 作者: ZHgogogoha 链接: https://blog.csdn.net/ZHgogogoha

js 数组、对象常见的遍历用法大全

♀尐吖头ヾ 提交于 2020-01-24 08:44:03
前言 对于前端js使用中,遍历函数是经常用到的,下面就列举一下前端的常见遍历方法 一、没有返回值的方法 for for 遍历应该是最普通也是最常见的遍历,如下: for ( let i = 0 ; i < 5 ; i ++ ) { console . log ( i ) ; //0 1 2 3 4 5,i为遍历次数 } for…in for…in 语句用于遍历数组或者对象的属性 const person = { id : '1' , name : '李子' } ; for ( let x in person ) { console . log ( x , person [ x ] ) ; } //id 1 //name 李子 //x 为对象的属性名:id、name;persion[x]即为对应的属性值了 注意: 1、该用法用于数组遍历时, x 则是数组的下标 2、一般用于对象属性遍历居多, 不建议对数组使用 ,原因如下: const person = [ { id : '1' , name : '李子' } ] ; person . test = '123' ; for ( let x in person ) { console . log ( x , person [ x ] ) ; } //0 { id: '1', name: '李子' } //test '123' 当数组对象

ajax调用webservice 跨域问题

余生长醉 提交于 2020-01-24 04:35:18
用js或者jquery跨域调用接口时 对方的接口需要做jsonp处理,你的ajax jsonp调用才可以 egg 接口中已经做了jsonp处理,所以可以跨域调用 //$.ajax({ // url: "http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&jsoncallback=?", // dataType: "jsonp", // type: "Post", // jsonpCallback: "jsonpCallback", // success: function (data) { // var $ul = $("<ul></ul>"); // $.each(data, function (i, v) { // alert(i); // //if (i=="success") { // //} else { // // $("#dvWeather").html("weaid:" + v.weaid + "<br/>" + "days:" + v.days + "<br/>" + "week:" + v.week + "<br/>" + "cityno:" + v.cityno + "<br/>" +

06------线程机制与事件机制

余生长醉 提交于 2020-01-21 16:38:11
进程与线程 1.进程 程序的一次执行,它占有一片独有的内存空间 可以通过windows任务管理器查看进程 2.线程 是进程内的一个独立执行单元 是程序运行的一个完整流程 是CPU的最小调度单元 如下图: 3.相关 应用程序必须运行在某个进程的某个线程中 一个进程中至少有一个运行的线程:主线程,进程启动后自动创建 一个进程中可以同时运行多个线程,程序是多线程运行的 一个进程内的数据可以供其中的多个线程直接共享 多个进程之间的数据是不能直接共享的 线程池(thread pool):保存多个线程对象的容器,实现线程对象的反复利用 4.相关问题 1).何为多进程与多线程? 多进程:一应用程序可以同时启动多个实例运行 多线程:在一个进程内,同时有多个线程运行 2).比较单线程与多线程? 多线程 优点: 能有效提升CPU的利用率 缺点: 创建多线程开销 线程间切换开销 死锁与状态同步问题 单线程 优点: 顺序编程简单易懂 缺点: 效率低 3).JS是单线程还是多线程? JS是单线程运行的 但使用H5中的Web Workers可以多线程运行 4).浏览器运行是单线程还是多线程? 都是多线程运行的 5).浏览器运行是单进程还是多进程? 有的是单进程:firefox、老版IE 有的是多进程:chrome、新版IE 浏览器内核 支撑浏览器运行的最核心的程序 1.不同浏览器的内核可能不同 Chrome

js学习笔记1

会有一股神秘感。 提交于 2020-01-21 07:30:38
html css javascript简介: html 定义了网页的内容 css 描述了网页的布局 javascript 定义了网页了行为 编译器和解释器: 解释器和编译器的工作是解析代码并执行,区别在于,对于静态语言(java,C++,C等)而言,这部分工作由编译器执行,编译器会先将源代码编译为另一种代码(机器码或字节码等)再执行; 而对于javascript这种动态语言,解释器会直接解析源代码并执行 javascript简介: javascript是一种轻量级的编程语言 1.语法简单 2.不用编译:可以由javascript引擎解释执行(但是目前还很难说javascript引擎是解释器还是编译器,因为Chrome的JS引擎V8,为了提高JS的运行性能,在运行之前会先将JS编译为本地的 机器码,然后再去执行机器码,这样效率就会提示很多) 3.不依赖于ide,调试方便(Javascript引擎是浏览器的组成部分之一,一般情况下都是由浏览器开发商自行开发的,如IE9的Chakra、Firefox的TraceMonkey、Chrome的V8,除了Javascript引擎外,浏览器还要做很多其他的事情,例如页面解析、页面渲染、Cookie管理、历史记录等等) Javascript语言特性: 1.单线程:由于Javascript作为浏览器脚本语言,主要的用途是和用户互动,以及操作DOM节点

怎么更好掌握Web前端技术 JS的跨域是怎么回事

邮差的信 提交于 2020-01-21 05:30:33
  怎么更好掌握Web前端技术?JS的跨域是怎么回事?JavaScript跨域是指通过JS在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过JS获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。下面来看看吧。   在此之前,我们首先要了解为什么需要跨域。跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。简单来说,跨域的作用就是让你能访问不是一个域的文件。   要解决跨域问题,我们可以使用以下几种方法:   一、通过jsonp跨域(实际上是动态创建script标签)   jsonp(json with Padding)是资料格式json的一种“使用模式”,可以让网页从别的网域要资料。jsonp也叫填充式json,是应用json的一种新方法,只不过是被包含在函数调用中的json。jsonp由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的json数据。   二、通过document.domain+ iframe (只有在主域相同的时候才能使用该方法)   两个不同域的a.html和b.html   解决办法:在两个页面都插入document.domain

什么是回调函数?回调函数的应用举例

若如初见. 提交于 2020-01-21 01:28:11
关于新手学习回调的一点心得 学习了前端几个月来,自己一直在文件夹和word有记录,但是总归是要养成写博客和git的习惯会好归于整理。 回归今天主题,回调函数是js里一个比较常用和新手容易忽略深入学习的函数,其实回调在实际开发中经常可用,比如做一个幻灯片,选项卡,再举例到最基本的跨域请求,都有回调的影子。 回调函数定义 百度百科中这样定义:回调函数就是一个通过函数指针调用的函数。 而我更愿意这样定义:函数A作为参数(函数引用)传递到另一个函数B中,函数B执行函数A。我们就说函数A叫做回调函数。特殊地,如果没有名称(函数表达式),就叫做匿名回调函数。 有同学会问:函数也可以是一个参数吗?就好比我们中学学过的f(x)=x^2,周所周知x是一个参数,f(x)是他对应的具体值。但在js里,f(x)也可以作为一个参数来使用,前提是他作为另一个函数的值域。也即是有一点特殊的复合函数的意思,但那是最基本的用法了,没什么特殊功能。 一个回调机制里包含主函数,回调函数和中间函数。 如果看定义看不明白,不妨让我们看看代码: //定义一个回调函数 a = function ( x ) { console . log ( x ^ 2 ) } //定义一个中间函数 b = function ( x , func ) { console . log ( 1 + func ( x ) ) } //定义一个主函数

promise 核心 几个小问题

送分小仙女□ 提交于 2020-01-21 01:18:51
1.如何改变pending的壮体 抛出异常。pending变为rejected // throw new Error('fail') 内部抛出异常也这样 reason为抛出的error resolve() pending变为resolved reject()pending变为rejected 2.一个promise指定多个成功/失败的回调 都会执行吗 全部都会执行 3.改变promise状态和指定回调函数的先后 一般异步情况 先指定的回调函数(内部保存回调函数),后改变状态(指定数据),然后执行回调函数 也可以先改变状态再指定回调 4.promise.then()返回的promise结果状态由什么决定 简单表达: 由.then指定的回调函数执行结果决定 详细表达: 抛出异常,新promise变为rejected,reason为抛出异常 返回的是非promise值。新promise为resolved value为值 返回的是新promise。新promise的结果就是结果 5ppromise如何串联多个操作任务 1.promise的then返回一个新的promise。 2.通过then的链式调用 6.promise的异常传透 1.可以在最后指定一个失败的回调 箭头函数作用 定义匿名函数 箭头作用 return reason => {} 加上大括号 就是函数体的标记 就没有return

c++bind函数的用法

前提是你 提交于 2020-01-20 21:44:29
bind函数:   auto newCallable = bind(callable, arg_list);   callable依据手册可以是:   Callable object (function object, pointer to function, reference to function, pointer to member function, or pointer to data member) that will be bound to some arguments. bind函数简述:    bind函数看做一个通用的函数适配器,它接受一个可调用对象callable,生成一个新的可调用对象newCallable。   它可以把原可调用对象callable的某些参数预先绑定到给定的变量中(也叫参数绑定),然后产生一个新的可调用对象newCallable。 网络编程中, 经常要使用到回调函数。 当底层的网络框架有数据过来时,往往通过回调函数来通知业务层。 这样可以使网络层只专注于 数据的收发, 而不必关心业务 在c语言中, 回调函数的实现往往通过函数指针来实现。 但是在c++中 , 如果回调函数是一个类的成员函数。这时想把成员函数设置给一个回调函数指针往往是不行的 因为类的成员函数,多了一个隐含的参数this。 所以直接赋值给函数指针肯定会引起编译报错。