回调函数

vue-axios的简单封装

我们两清 提交于 2019-11-29 08:47:21
前言 vue中ajax请求官方推荐是axios,之前集成的vue-source早被放弃了。axios的用法与jquery-ajax,vue-source的用法均有所不同。为了使用起来更方便,需要对axios简单进行封装。 封装的关键点 1、get 和 post 请求时,传参的方式不同 在get请求中,是使用params: {};在post请求中,使用data: {},至于为啥是这样,不是很清楚,但是官方已经在文档中,有说明: 对于post请求! 对于get请求 而且,在项目中实际尝试了下,发现当get请求时,必须使用params: {}的方式,而post请求的时候,必须使用data: {}的方式。不然是参数是传递不成功的。 2、post请求传参需要进行处理 当使用post请求时,将发送的请求参数需要使用qs.stringify进行包裹。不然是发送不成功的。 3、post请求的时候,请求头需要设置 4、axios请求没有finally或者always方法 在进行ajax请求的时候,需要有成功,失败,无论成败与否,这三种情况的回调函数。在axios的官方文档中,指出了成功使用.then回调函数,失败使用.catch回调函数,但是没有指出成败与否都执行的回调函数。 当浏览器支持原生的promise的时候,可以用.finally方法来处理成败与否都会执行这种情况

回调函数的原理及运用

我只是一个虾纸丫 提交于 2019-11-29 08:20:44
第一个问题:什么是回调函数?来看一下百度百科的定义为:回调函数就是一个通过 函数指针 调用的函数。如果你把函数的 指针 (地址)作为 参数传递 给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。说的很复杂,我们来用一个生活中的例子来理解回调的意义。在看这个例子之前我们来总结一下回调机制原理。 回调函数是利用函数指针来实现的一种调用机制 回调机制原理: 1.调用者不知道具体事件发生时需要调用的具体函数 2.被调函数不知道何时被调用,只知道需要完成的任务 3.当具体事件发生时,调用者通过函数指针来调用具体函数 回调机制中的调用者和被调函数互不依赖。 例子:我们经常在电视剧或者电影中看到如下情节,一位主人公为了完成某个非常难的任务,这个时候一个绝世高人给了他一个锦囊,对他说你在遇到困难的时候打开这个锦囊,这个锦囊里面写的东西会告诉你怎么做。其实这里面就蕴含了回调的机制在里面。为什么呢?就比如我们把主人公去某个地方完成任务比作一个函数(调用者),然后锦囊里面的内容为一个函数(被调用者)。看看满不满足上述的3个条件。1.主人公不知道锦囊里面的内容,2.锦囊不知道什么时候会被主人公拆开,锦囊里面只写着怎么帮助主人公解决困难。3.当主人公遇到困难的时候

关于Promise

一个人想着一个人 提交于 2019-11-29 08:14:56
Javascript 中的Promise 一,什么是 Promise Promise 是异步编程的一种解决方案---回调函数中的回调地狱( callback hell )。ES6 将其写进了语言标准,统一了用法。简单的说 Promise 就是一个容器,里面保存着某个未来才会结束的事件 。 一个 Promise 有以下几种状态: pending : 初始状态,既不是成功,也不是失败状态。 fulfilled : 意味着操作成功完成。 rejected : 意味着操作失败。 pending 状态的 Promise 对象可能会变为fulfilled 状态并传递一个值给相应的状态处理方法,也可能变为失败状态(rejected)并传递失败信息。当其中任一种情况出现时,Promise 对象的 then 方法绑定的处理方法(handlers )就会被调用(then方法包含两个参数:onfulfilled 和 onrejected,它们都是 Function 类型。当Promise状态为 fulfilled 时,调用 then 的 onfulfilled 方法,当Promise状态为 rejected 时,调用 then 的 onrejected 方法, 所以在异步操作的完成和绑定处理方法之间不存在竞争)。 codeacademy中的一个洗碗机的例子就很形象: Pending : 洗碗机在工作

Python快速开发分布式搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

人盡茶涼 提交于 2019-11-29 07:01:38
第一步。首先下载,大神者也的倒立文字验证码识别程序 下载地址: https://github.com/muchrooms/ ... 注意:此程序依赖以下模块包   Keras==2.0.1   Pillow==3.4.2   jupyter==1.0.0   matplotlib==1.5.3   numpy==1.12.1   scikit-learn==0.18.1   tensorflow==1.0.1   h5py==2.6.0 numpy-1.13.1+mkl 我们用豆瓣园来加速安以上依赖装如: pip install -i https://pypi.douban.com/simple h5py==2.6.0 如果是win系统,可能存在安装失败的可能,如果那个包安装失败,就到 http://www.lfd.uci.edu/~gohlk ... 找到win对应的版本下载到本地安装,如: pip install h5py-2.7.0-cp35-cp35m-win_amd64.whl 第二步,将者也的,验证码识别程序的zheye文件夹放到工程目录里 如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的。交流经验。从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理

回调函数

非 Y 不嫁゛ 提交于 2019-11-29 06:50:49
回调函数的概念(转自百度百科): 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 回调函数机制: 1、定义一个函数(普通函数即可); 2、将此函数的地址注册给调用者; 3、特定的事件或条件发生时,调用者使用函数指针调用回调函数。 #include <stdio.h> // 类型重定义:函数指针类型 typedef int(*callback)(int,int); // 调用者 int call(int a,int b,callback p){ return (*p)(a,b); } // 回调函数 int add(int a,int b){ return a+b; } // 主函数 int main(int argc,char *args[]){ int res = call(4,2,add); printf("%d\n",res); return 0; } 注(函数指针的用法): 返回类型(*函数名)(参数表) 来源: https://blog.csdn.net/t1452955147/article/details/100544487

行为树的回调函数

不羁的心 提交于 2019-11-29 06:32:01
behaviorDesign(行为树插件)的回调函数: OnAwake:树初始化的时候,类似MonoBehavior的Awake函数。如果树被激活了,多次执行,OnAwake只会执行一次。 OnStart:当前Task第一次被执行的时候,默认返回成功,树每被遍历一次,OnStart最多执行一次。 OnUpdate:只要执行到当前的Task,就会触发,跟MonoBehavior的Update同一个频率。可以选择返回Success或Failure,返回Runing是停留在当前Task。 来源: https://blog.csdn.net/Roadlun/article/details/100540167

Eloquent JavaScript #15# Asynchronous Programming(渣翻)

这一生的挚爱 提交于 2019-11-29 04:44:02
// 删了浪费 1、异步VS.同步 知乎 上看到的一个解释。 打个比方。你去书店借书,问书店老板有没有《代码大全》。 如果是同步的处理方式,老板会说:“你在这儿站着别动,我去找找看”。于是你在柜台等啊等啊,直到老板重新出现并告诉你结果。而异步的处理方式则是,老板直接告诉你,让我找一下啊,等会儿打电话通知你,然后你就开开心心地(?)回家了... 2、乌鸦科技 许多人都知道乌鸦是一种特别聪明的鸟。它们能够使用工具,提前做好计划,记住事情,甚至互相交流。 但大多数人所不知道的是,它们还隐藏了许多我们所不知道的能力。我听一位很有信誉的鸦科专家说,乌鸦的科技距离人类并不是非常遥远,并且它们正在迎头赶上。 举个例子,许多乌鸦文明都具有构建计算设备的能力。这些设备不同于人类的电子计算设备,而是通过微小昆虫们的行动来运作,这些昆虫是与白蚁密切相关的物种,它们和乌鸦形成了共生关系。乌鸦为它们提供食物,作为回报,昆虫构建和操控它们复杂的菌落,在他们内部生物的帮助下进行计算。 这些菌落通常位于大且存在时间长的乌鸦巢中。乌鸦和昆虫共同构建了一个球状粘土结构的网络,隐藏在构成乌鸦巢的树枝之间,昆虫正是在这里生活和工作。 这些机器采用光信号和其它设备通信。乌鸦将反光材料嵌入特殊的通信杆中,昆虫用这些材料将光线反射到另一个巢穴,将数据编码为一系列快速的闪光。 我们的朋友,鸦科专家已经绘制了Rh

JavaScript数组(Array)方法大全

独自空忆成欢 提交于 2019-11-29 03:26:51
js中数组的方法种类众多,有ES5之前版本中存在的,ES5新增,ES6新增等;并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中原型上的方法。 一、在使用数组的方法之前,需要先创建数组,创建数组有以下方式: 字面量方式(json方式)  构造函数方式 二、数组方法概括 三、方法详解 1.concat() 功能: 用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 参数: concat(data1,data2,...);所有参数可选,要合并的数据;data为数组时,将data合并到原数组;data为具体数据时直接添加到原数组尾部;省略时创建原数组的副本。 2.join() 功能: 根据指定分隔符将数组中的所有元素放入一个字符串,并返回这个字符串。 参数: join(str);参数可选,默认为","号,以传入的字符作为分隔符。 3.pop() 功能: 方法用于删除并返回数组的最后一个元素。 参数: 无 4.shift() 功能: 方法用于删除并返回数组的第一个元素。 参数: 无 5.unshift() 功能: 向数组的开头添加一个或更多元素,并返回新的长度。 参数: unshift(newData1, newData2, ......) 6.push() 功能: 向数组的末尾添加一个或更多元素,并返回新的长度。 参数:

异步与多线程的区别

一世执手 提交于 2019-11-29 01:50:33
当我们在遇到需要长时间执行的任务时候,比如读取一个文件,远程服务调用。这些功能都会阻塞主线程,造成主线程卡死,从而造成一种软件崩溃的假象。这样的情况下,我们都会想到使用异步多线程的技术去解决这个问题。 我在学习NodeJs的之前,一直以为异步和多线程是同一个概念,当我接触到Node的时候,感觉自己遭到了当头棒喝,Node是单线程的,也不支持多线程,但是他的很多操作都是异步的,比如文件的读取。这让我很沮丧,也花了很长时间去理解异步和多线程的概念区别,现在记录下来我现在的想法,希望看到的朋友也能帮组我理解一下。 异步,相对于同步,C#执行代码的顺序是从上到下,从右到左,从上往下执行的这种就称之为同步执行,异步相对于同步,就是同时执行的意思。 如下流程图 如上图是同步和异步的执行模式。 什么是多线程?多线程是实现异步的一种技术。综上:异步是一种技术功能要求,多线程是实现异步的一种手段。除了使用多线程可以实现异步,异步I/O操作也能实现。硬盘,显卡这些硬件是可以不消耗CPU资源而自动与内存交换数据的,这也是实现异步的基本条件,当数据交互完成,再触发指定的回调函数,来实现异步之后的同步。所以这也是NodeJs的异步I/O操作全部是通过异步回调来实现的原因。 在Net中可以使用委托实现异步调用的功能。 Action test = () => { for (double i = 0; i <

Dojo入门:增强的Ajax功能

喜你入骨 提交于 2019-11-29 01:44:55
随着Web技术的发展,RIA似乎已经成了主流,Ajax也随之成了不可或缺的部分。Ajax是异步的javascript和Xml,虽然现在很多交互的数据格式都不再严格的采用XML,但这种异步的操作却越来越流行了。目前主流的JS工具包都包含了Ajax的功能,dojo也有自己的Ajax框架XHR。 XHR框架 XHR框架是dojo对ajax支持的一组方法,允许想服务器端发出get、post、put、delete请求,这些方法包括: xhrGet xhrPost xhrPut xhrDelete 所有这些函数都遵守相同的语法:接受一个属性配置对象作为参数。在这些对象中您可以定义您想要发出的 Ajax 请求的各个方面。再一次说明,这些选项在所有 XHR 函数中都是一样的。 比较常用的选项: url:这是 HTTP 请求的 URL。它必须和发出这一请求的页面有同样的域和端口组合。 handleAs:允许您定义响应的处理格式,默认是 text,但是,json、javascript、xml、还有一些其他选项也可用。在本节后面您将看到一个创建 Ajax 请求的示例,使用一个处理 JSON 响应格式的回调函数。 form:<form> 元素的一个引用或者字符串 ID 表示。form 中每个字段的值将被同请求一起作为请求体发送。 content:一个对象,包含您想要传递给请求体中资源的参数。如果两者都提供