回调函数

setTimeout和setInterval

两盒软妹~` 提交于 2020-04-03 16:34:54
(转自: http://www.mxria.com/helps/js_error/trap_error_1572.htm ) 由于 JavaScript 是异步的,可以使用 setTimeout 和 setInterval 来计划执行函数。 注意:定时处理不是ECMAScript 的标准,它们在 DOM (文档对象模型) 被实现。 function foo(){}var id = setTimeout(foo,1000);// 返回一个大于零的数字 当 setTimeout 被调用时,它会返回一个 ID 标识并且计划在将来大约1000 毫秒后调用 foo 函数。 foo 函数只会被执行一次。 基于 JavaScript 引擎的计时策略,以及本质上的单线程运行方式,所以其它代码的运行可能会阻塞此线程。 因此没法确保函数会在 setTimeout 指定的时刻被调用。 作为第一个参数的函数将会在全局作用域中执行,因此函数内的 this 将会指向这个全局对象。 functionFoo(){this.value =42;this.method =function(){// this 指向全局对象 console.log(this.value);// 输出:undefined}; setTimeout(this.method,500);}newFoo(); 注意: setTimeout

node 进阶 | 通过node中如何捕获异常阐述express的特点

冷暖自知 提交于 2020-04-01 09:01:13
node如何捕获异常     node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么node还这么火?甚至有了Node工程师这个岗,肯定就是node有自己crash之前与之后的解决方法,比如捕获异常    问:nodejs如何捕获异常?答:回调函数中有err形参,console.log出来,这是我之前回答别人问题的答案,但是自从我这几天看了如何捕获异常,才知道捕获异常的精髓就是不要让服务crash掉,抛出500状态码。而我回答的是风马牛不相及。     一般如何捕获异常    1、使用uncaughtExprection去捕获异常 process.on("uncaughtExpection",function(err){ console.log(err) })    2、用try-catch在回调函数前捕获异常     var http = require('http'); http.createServer(function(req, res) { try { fn(req, res); } catch(e) { console.log(e.stack); res.end("Error") } }).listen(3000); function fn

fullPage.js

感情迁移 提交于 2020-04-01 06:59:43
fullPage.js 是一个基于 jQuery 的插件,它能够很方便、很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机、平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度、背景颜色、滚动速度、循环选项、回调、文本对齐方式等等 <link rel="stylesheet" href="css/jquery.fullPage.css"> <script src="js/jquery.min.js"></script> <!-- jquery.easings.min.js 是必须的,用于 easing 参数,也可以使用完整的 jQuery UI 代替 --> <script src="js/jquery.easings.min.js"></script> <!-- 如果 scrollOverflow 设置为 true,则需要引入 jquery.slimscroll.min.js,一般情况下不需要 --> <script src="js/jquery.slimscroll.min.js"></script> <script src="js/jquery.fullPage.js"></script> $(function(){ $('#fullpage').fullpage(); }); HTML <div

fullpage.js

爱⌒轻易说出口 提交于 2020-04-01 06:58:49
fullPage.js 是一个基于 jQuery 的插件,它能够很方便、很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机、平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度、背景颜色、滚动速度、循环选项、回调、文本对齐方式等等 1 2 3 4 5 6 7 8 9 10 < link rel="stylesheet" href="css/jquery.fullPage.css"> < script src="js/jquery.min.js"></ script > <!-- jquery.easings.min.js 是必须的,用于 easing 参数,也可以使用完整的 jQuery UI 代替 --> < script src="js/jquery.easings.min.js"></ script > <!-- 如果 scrollOverflow 设置为 true,则需要引入 jquery.slimscroll.min.js,一般情况下不需要 --> < script src="js/jquery.slimscroll.min.js"></ script > < script src="js/jquery.fullPage.js"></ script > 1 2 3 $( function ()

fullpage

独自空忆成欢 提交于 2020-04-01 06:58:10
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>fullpage</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/2.9.2/jquery.fullPage.css"> <style> .slide{ text-align: center; } #fullpageMenu{ position: fixed; top: 0; z-index: 999; } </style> </head> <body> <ul id="fullpageMenu"> <li data-menuanchor='page1' class="active"><a href="#page1">1 section</a></li> <li data-menuanchor='page2'><a href="#page2">2 section</a></li> <li data

setTimeout和setImmediate以及process.nextTick的区别

こ雲淡風輕ζ 提交于 2020-03-30 04:37:10
  在javascript中我们了解到了setTimeout和setInterVal函数事件队列(任务队列)的相关知识,除了setTimeout和setInterval这两个方法外,Node.js还提供了另外两个与"任务队列"有关的方法:process.nextTick和setImmediate。它们可以帮助我们加深对"任务队列"的理解。    setTimeout()   首先我们看看setTimeout(setInterVal和setTimeout函数区别只是执行次数)函数,需要注意的是,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数。要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,回调函数一定会在setTimeout()指定的时间执行。 1 setTimeout(function(){console.log('0')},0);//意思是回调函数加入事件队列的队尾,主线程和事件队列的函数执行完成之后立即执行定时器的回调函数,如果定时器的定时是相同的,就按定时器回调函数的先后顺序来执行。 2 console.log(1); 3 setTimeout(function(){console.log(2);},1000); 4 setTimeout(function(){console.log(4);}

【第三节 回调函数和事件】

风格不统一 提交于 2020-03-30 04:19:53
一、回调函数 1.异步式读取文件:     ⑴ nodejs文件下,新建一个txt文件,和一个js文件:          ⑵ txt 和 js文件内容如下:            --------------------------------------------------------------------------------------------------------              ★★★★★:          readFile()是fs中的一个方法——“读取文件”,它里面的三个参数意义分别为“文件名”,“编码方式”,“回调函数”。          fs.readFile()调用后所做的工作只是将异步I/O请求发送给了操作系统,然后立即返回并执行后面的操作,执行完以后进入循环监听时间,当fs接受到I/O请求完成时间时,时间循环会主动调用回调函数以完成后续工作。     ⑶ 结果如图,读取成功:      2. 同步式读取文件,讲file.js内容替换为如下(或者新建一个js文件): var fs=require('fs'); var data=fs.readFileSync('file.txt','utf-8'); console.log(data) console.log('end.') 结果:      ★★★★★:      

《node.js权威指南》读书笔记

前提是你 提交于 2020-03-30 03:32:21
第一章 node.js介绍 非阻塞型I/O机制 当在访问数据库取得搜索结果的时候,在开始访问数据库之后,数据库返回结果之前,存在一段等待时间。 在传统的单线程处理机制中,在执行了访问数据库的代码之后,整个线程都将暂停下来,等待数据库返回查询结果之后才能继续执行后面的代码。这是I/O型阻塞 node.js中在执行了访问数据库的代码之后将立即执行其后面的代码段,把数据库返回的结果的处理代码放在回调函数中。这是非阻塞型I/O机制 第三章 node.js中的全局作用域及全局函数 timer.unref()用于取消setTimeout或setInterval函数中指定的回调函数的调用 timer.ref()恢复unref方法取消的回调函数 var testFunction = function(){ console.log('aaa') } var timer = setInterval(testFunction,3000) //取消定时器对象的回调函数调用 timer.unref() //没有输出 //恢复定时器对象的回调函数调用 // timer.ref()//有输出 在任何模块文件内部,可以使用 __filename 变量获取当前模块文件名 在任何模块文件内部,可以使用 __dirname 变量获取当前模块文件所在目录的完成绝对路径 EventEmitter类 emitter

Gen_fsm行为实践与分析

陌路散爱 提交于 2020-03-28 06:53:54
1.简介 Gen_fsm是一个通用的有限状态机,它描述了这样的一组关系: State(S) x Event(E) -> Actions(A),State(S') 这个关系意味着:如果在S状态下发生事件E,将执行动作A并返回状态S'.对于一个FSM实现可以使用gen_fsm行为来实现,它提供了标准的接口函数和回调函数。并且,gen_fsm进程可以安装在supervisor监控树中。回调函数与导出函数的关系如下: 1 gen_fsm moduleCallbackmodule 2 ----------------------------- 3 gen_fsm:start_link ----->Module:init/1 4 gen_fsm:send_event ----->Module:StateName/2 5 gen_fsm:send_all_state_event ----->Module:handle_event/3 6 gen_fsm:sync_send_event ----->Module:StateName/3 7 gen_fsm:sync_send_all_state_event ----->Module:handle_sync_event/4 8 ------>Module:handle_info/3 9 ------>Module:terminate/3 10 ---

Gen_server行为分析与实践

半城伤御伤魂 提交于 2020-03-28 06:51:59
1.简介 Gen_server实现了通用服务器client_server原理,几个不同的客户端 去 分享服务端管理的资源(如图),gen_server提供标准的接口函数和包含追踪功能以及错误报告来实现通用的服务器,同时可以作为OTP监控树的一部分。 Gen_server函数与回调函数之间的关系: 1 gen_server moduleCallbackmodule 2 -------------------------------- 3 gen_server:start_link ----->Module:init/1 4 gen_server:call 5 gen_server:multi_call ----->Module:handle_call/3 6 gen_server:cast 7 gen_server:abcast ----->Module:handle_cast/2 8 ------>Module:handle_info/2 9 ------>Module:terminate/2 10 ------>Module:code_change/3 如果回调函数失败或者是返回bad value,gen_server将终止。 Gen_server可以处理来自系统的消息,通过sys模块可以调试一个gen_server.(未实践) 注意:一个gen