回调函数

ES6中的Promise对象的理解

蓝咒 提交于 2019-12-01 16:23:51
Promise的含义 promise是异步编程的一种解决方法。 所谓promise,简单说是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果,从语法上说,promise是一个对象,从它可以获取异步操作的消息,promise提供了统一的API,各种异步操作都可以用同样的方法进行处理。 Promise对象的特点 (1)对象的状态不受外界影响,promise对象代表一个异步操作,有三种状态,pending(进行中)、fulfilled(已成功)、rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也是promise这个名字的由来“承若”; (2)一旦状态改变就不会再变,任何时候都可以得到这个结果,promise对象的状态改变,只有两种可能:从pending变为fulfilled,从pending变为rejected。这时就称为resolved(已定型)。如果改变已经发生了,你再对promise对象添加回调函数,也会立即得到这个结果,这与事件(event)完全不同,事件的特点是:如果你错过了它,再去监听是得不到结果的。 有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。 Promise也有一些缺点。首先

js回调函数(callback)(转载)

独自空忆成欢 提交于 2019-12-01 16:17:55
学习jquery时,对回调函数感觉很困惑,在晚上找了半天,忽然发现这篇文章很浅显,基本说明了问题。故转载 原文: 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,于是在google回调函数,发现网上的中文解释实在是太“深奥”了,我承认自己才疏学浅了。看了几个回调的例子后,貌似有点理解了。下面是我对回调函数的理解,要是理解错了,请指正,不甚感激。 首先还是从jquery网站上的英文定义入手,身为国人,我真感到悲剧。一个回调的定义被国内的“高手”解释成什么样,就在那绕圈子,貌似只有把你绕进去了,他才算高手。浮云,一切都是浮云。 A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 这是js里的解释了,其他语言的算我没说。 字面上理解下来就是,回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。 其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。

前端随心记---------AMD和CMD规范的区别

拜拜、爱过 提交于 2019-12-01 16:04:09
1、 为什么要使用模块化?   模块化的作用有以下这些: 可以解决命名冲突 管理依赖 提高代码的可读性 代码解耦,提高代码的复用性 AMD(异步执行) 是 RequireJS 在推广过程中对模块定义的规范化产出。 CMD (同步执行)是 SeaJS 在推广过程中对模块定义的规范化产出。 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。 目前这些规范的实现都能达成浏览器端模块化开发的目的。 浏览器不兼容CommonJS( http://wiki.commonjs.org/wiki/Modules/1.1 )的根本原因,也正是在于缺少四个Node.js环境的变量。 module exports require global 2.AMD规范 AMD 是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。   AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:   require([module], callback);   第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback

window 对象常见的事件

主宰稳场 提交于 2019-12-01 15:21:37
1.页面加载事件  方式1:window.onload = function(){ }  window.addEventListener('load',function(){ })  window.onload 是窗口(页面)加载事件,当文档内容完全加载成功,就会触发该事件(包括图像,脚本文件,CSS文件等),就调用的处理函数。   注意:   1.有了 window.pnload 就可以把JS代码写到页面元素的上方,因为 onload 是等页面内容全部加载完毕,再去执行处理函数。   2.window .onload 传统注册事件方式只能写一次,如果有多个,会议最后一个 window.onload 为准。   3.如果使用 addEventListener 则没有限制  方式2:document.addEventListener('DOMContentLoaded',function(){ })  DOMContentLoaded 事件触发时,仅当 DOM 加载完成,不包括样式表,图片,flash等等。IE9以上才支持    注意 :    如果页面的图片很多的话,从用户访问到 onload 触发可能需要较长的时间,交互效果就不能实现,必然影响用户体验,此时用DOMContentLoaded 时间比较合适。 2.调整窗口大小事件  window.onresize =

php中的数组函数学习记录1

半世苍凉 提交于 2019-12-01 13:04:15
1、返回字符串键名全为小写或大写的数组。array_change_key_case 用法:array_change_key_case($input (array),CASE_UPPER|CASE_LOWER),其中CASE_LOWER是返回小写(默认),CASE_UPPER返回大写 例子: $input_array = array ( "FirSt" => 1 , "SecOnd" => 4 ); var_dump ( array_change_key_case ( $input_array , CASE_UPPER )); var_dump ( array_change_key_case ( $input_array )); 结果:array(2) { ["FIRST"]=> int(1) ["SECOND"]=> int(4) } array(2) { ["first"]=> int(1) ["second"]=> int(4) } 2、将一个数组分为多个数组。array_chunk 用法:array_chunk($input(array),$size(int),TRUE|FALSE),其中$size是每一个新的数组的个数,TRUE会保留原来的键名,FALSE会重新从数字索引开始(默认)。 $input_array = array ( 'a' => 'python' , "b"

php中call_user_func()与call_user_func_array()区别

Deadly 提交于 2019-12-01 13:03:23
call_user_func:把一个参数作为回调函数调用 用法说明: call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed 参数说明: 第一个参数$callback作为回调函数,其它参数都是回调函数的参数。 $parameter:传入回调$callback函数的参数,这里的参数注意不能引用传递。 下面简单例子分别说明了在不同情况下使用call_user_func: //先引用,后执行 function _call($call){ echo $call++.'<br/>'; echo $call++.'<br/>'; return $call; } $rs = call_user_func('_call',1); var_dump($rs); //结果 //1 //2 //int(3) 先执行,后引用 $arg = 1; call_user_func(function ($call){ echo ++$call.'<br/>'; echo ++$call.'<br/>'; },$arg); //结果为2,3 回调函数不传值,通过func_get_arg和func_get_args获取参数 $argOne = 1; $argTwo = 2;10 call_user_func

异步操作

╄→гoц情女王★ 提交于 2019-12-01 11:47:58
异步操作的模式 1、回调函数是异步操作最基本的方法 回调函数:回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。 2、采用事件驱动模式 trigger() 方法触发被选元素上指定的事件以及事件的默认行为(比如表单提交)。 来源: https://www.cnblogs.com/songsongblue/p/11683924.html

jquery deferred

穿精又带淫゛_ 提交于 2019-12-01 10:39:20
jQuery的deferred对象详解 作者: 阮一峰 日期: 2011年8月16日 jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 每个版本都会引入一些新功能。今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。 这个功能很重要,未来将成为jQuery的核心方法,它彻底改变了如何在jQuery中使用ajax。为了实现它,jQuery的全部ajax代码都被改写了。但是,它比较抽象,初学者很难掌握,网上的教程也不多。所以,我把自己的学习笔记整理出来了,希望对大家有用。 本文不是初级教程,针对的读者是那些已经具备jQuery使用经验的开发者。如果你想了解jQuery的基本用法,请阅读我编写的《jQuery设计思想》和《jQuery最佳实践》。 ====================================== jQuery的deferred对象详解 作者:阮一峰 一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。 通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。 但是

promise的使用

本秂侑毒 提交于 2019-12-01 10:16:43
前端开发过程中会有很多异步产生,有时要拿到异步里的数据的情况,如何解决呢? ES6中就提供了一个解决异步的方法,就是promise。 什么是promise 简单来说就是一个容器,里面保存着某个未来才会结束的事件(也就是异步操作)的结果。从语法上来讲,Promise是一个对象,从它可以获取异步操作的消息,它提供统一的API,各种异步操作都可以用同样的方法进行处理。 promise的特点 1.1.1、对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态、任何其他操作都无法改版这个状态。 1.1.2、一旦状态改版,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只存在两种可能:从 pending 变为 fulfilled 和 从 pending 变为 rejeced。只要这两种情况发生,状态就终止,不会再变了并一直保持这个结果。这时就称为 resolved(已定型)。如果改版已经发生了,即使再对Promise对象添加回调函数,也会立即得到这个结果。如果你错过了再想去监听,是得不到结果的。 1.1.3、有了Promise对象,就可以将异步操作以同步操作的流程显示出来,这样就避免了层层嵌套的回调函数

CrawlSpider

安稳与你 提交于 2019-12-01 10:14:20
CrawlSpider类通过一些规则(rules),使对于链接(网页)的爬取更具有通用性,换句话说CrawlSpider爬虫是通用性爬虫,那么Spider爬虫就更像是为了一些特殊网站制定的爬虫 创建一个工程:     scrapy startproject crawlspider   scrapy genspider -t crawl CrawlSpider domain.com   这里面的-t crawl表示的是爬虫的类,这样我们就可以直接在spiders文件中找到这个爬虫 class CrawlspiderSpider(CrawlSpider): name = 'CrawlSpider' allowed_domains = ['www.domin.com'] start_urls = ['http://www.domin.com/'] rules = ( Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True), ) def parse_item(self, response): i = {} #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract() #i['name'] = response.xpath