回调函数

Node.js笔记-day04

淺唱寂寞╮ 提交于 2019-11-30 16:20:18
18.Node.js 回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。 回调函数一般作为函数的最后一个参数出现: function foo1(name, age, callback) { } function foo2(value, callback1, callback2) { } 阻塞代码实例 创建一个文件 input.txt ,内容如下: 菜鸟教程官网地址:www.runoob.com 创建 main.js 文件, 代码如下: var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束!"); 以上代码执行结果如下: $ node main.js 每天坚持一点点,一个月准学完这个教程 程序执行结束! 非阻塞代码实例

Node.js 回调函数(阻塞/非阻塞)学习笔记

我与影子孤独终老i 提交于 2019-11-30 16:20:04
原教程: http://www.runoob.com/nodejs/nodejs-callback.html Node.js 异步编程的直接体现就是回调。 PS:我的理解,相当于C++编程中的线程,通俗讲就是几件事同时做,各做各的,互不干涉。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 PS:也就是说,主进程只执行核心业务逻辑,细节操作都在后台进行。 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。 PS:阻塞就像一队人前进,遇到问题就全部停下来直到问题解决再前进; 另一种情况就像,一队人前进,遇到问题1个人留下解决问题,其它人继续前进,到终点后再等待那个人汇报处理的结果。 阻塞代码实例 创建一个文件 input.txt ,内容如下: 菜鸟教程官网地址:www .runoob .com 创建 main.js 文件, 代码如下: var fs = require ( "fs" ); var data = fs . readFileSync( 'input.txt' ); console .

Node.js 事件循环和回调函数

拜拜、爱过 提交于 2019-11-30 16:18:46
一、Node.js 事件循环 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. 1、事件驱动程序 Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为web server一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)。在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。 整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例: // 引入

微信小程序学习

百般思念 提交于 2019-11-30 16:08:10
微信小程序 一、小程序代码构成 1.JSON 配置 (1)小程序配置 app.json app.json: 是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等(类似manifest)。 project.config.json: 工具配置 工具上做的任何配置都会写入到这个文件,当你重新安装工具或者换电脑工作时,你只要载入同一个项目的代码包,开发者工具就自动会帮你恢复到当时你开发项目时的个性化配置 page.json 页面配置:独立定义每个页面的一些属性,例如刚刚说的顶部颜色、是否允许下拉刷新等等。 2、WXML 模板 WXML 充当的HTML 的角色。但是小程序的 WXML 用的标签是 view, button, text 等等。 把渲染与逻辑分离,即不让JS直接操控DOM,只需管理状态 3、WXSS样式 WXSS 用来决定 WXML 的组件应该怎么显示。WXSS 具有 CSS 大部分特性。 二、运行环境 小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程(这啥?)运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发 程序与页面

jquery的deferred使用详解

ⅰ亾dé卋堺 提交于 2019-11-30 15:14:41
jquery的deferred使用详解: https://www.cnblogs.com/shijingjing07/p/6403450.html 1.什么是deferred对象 deferred对象是一个延迟对象,意思是函数延迟到某个点才开始执行,改变执行状态的方法有两个(成功:resolve和失败:reject),分别对应两种执行回调(成功回调函数:done和失败回调函数fail) 2.deferred对象使用示例 ajax方式其实是deferred对象 1)普通的ajax操作 $.ajax({ url: "index.html", success: function () { alert("success"); }, error: function () { alert("error"); } }); success,error函数在请求url响应后才开始执行 2)1.5版本后新的写法 $.ajax("index.html") .done(function () { alert("success"); }) .fail(function () { alert("error"); }) .done(function () { alert("success2");}); 新的写法可以自由添加多个回调函数,按添加的顺序执行。 3)为多个ajax执行回调函数 $.when($

详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJ

こ雲淡風輕ζ 提交于 2019-11-30 14:07:33
只有$.ajax是以一个完整的对象{}来发送请求的,其他的比如$.get(),$.post()都不是. 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数。而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明。 $.get( "data.php",//待载入页面的URL地址 { name: "John", time: "2pm" },//待发送 Key/value 参数。注意,这是一个object对象?? function(data){ $("#getResponse").html(data); }//返回的data是字符串类型 ); 二,$.post(url,[data],[callback],[type]) 说明:这个函数跟$.get()参数差不多,多了一个type参数,type为返回的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就 和$.get()返回的格式一样,都是字符串的。 $.post( "emp.do?p

理解 JS 回调函数中的 this

杀马特。学长 韩版系。学妹 提交于 2019-11-30 13:42:39
理解 JS 回调函数中的 this: https://www.cnblogs.com/gavinyyb/p/6286750.html 原文链接: http://www.tuicool.com/articles/z2Yvaq 任何变量或对象都有其赖以生存的上下文。如果简单地将对象理解为一段代码,那么对象处在不同的上下文,这段代码也会执行出不同的结果。 例如,我们定义一个函数 getUrl 和一个对象 pseudoWindow 。 function getUrl() { console.log(this.document.URL); } var pseudoWindow = { document: { URL: "I'm fake URL" }, getUrl1: getUrl, getUrl2: function (callback) { callback(); this.func = callback; this.func(); } } 执行 getUrl() ,打印出当前页面的 URL。 执行 pseudoWindow.getUrl1() ,打印出 I'm fake URL 。 执行 pseudoWindow.getUrl2(getUrl) ,先打印出当前页面 URL,后打印 I'm fake URL 。 下面让我们用最简单粗暴的语言来解释以上代码。 概念 什么是 this?

浅谈Promise原理与应用

心不动则不痛 提交于 2019-11-30 12:58:16
  在JavaScript中,所有代码都是 单线程 。由于该“缺陷”,JavaScript在处理网络操作、事件操作时都是需要进行异步执行的。AJAX就是一个典型的异步操作   对于异步操作,有传统的利用回调函数和使用 Promise,二者的对比如下: //以往回调方式 函数1(function(){ //代码执行...(ajax1) 函数2(function(){ //代码执行...(ajax2) 函数3(function(data3){ //代码执行...(ajax3) }); ... }); }); //Promise回调方式:链式调用,可构建多个回调函数。 //例如请求一个ajax之后,需要这个拿到这个ajax的数据去请求下一个ajax promise().then().then()...catch()   对比可知,使用传统回调函数方式处理异步操作很复杂。为了解决这样的问题,commonJS引入了Promise概念,很好的解决了JavaScript的异步操作。 概念    Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更简单易理解且实用,所以Promise简单来说就是一个容器,里面保存着某个未来才会执行事件(通常为一个异步操作)的结果。 特点 对象的状态不受外界影响 一旦状态改变,就不会再变化,任何时候都可以得到这个结果     语法 /

WINAPI

你。 提交于 2019-11-30 12:10:19
title: WIN API 计时 获取时钟频率=》获取2次计数差=》用时 QueryPerformanceFrequency() - 基本介绍 类型:Win32API 原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); 作用:返回硬件支持的高精度计数器的频率。 返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。 QueryPerformanceFrequency() - 技术特点 供WIN9X使用的高精度定时器:QueryPerformanceFrequency()和QueryPerformanceCounter(),要求计算机从硬件上支持高精度定时器。需包含windows.h头文件。 函数的原形是: BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount); #if defined(MIDL_PASS) typedef struct _LARGE_INTEGER { #else // MIDL_PASS typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG

微信小程序路由跳转

风格不统一 提交于 2019-11-30 11:53:04
微信小程序路由跳转 1.wx.switchTab(Object object) 这里的tabBar是底下的导航栏指定的页面, 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 参数 Object object 属性 类型 默认值 必填 说明 url string 是 需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数。 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete function 否 接口调用结束的回调函数(调用成功、失败都会执行) 示例代码 { "tabBar": { "list": [ { "pagePath": "index", "text": "首页" }, { "pagePath": "other", "text": "其他" } ] } } wx.switchTab({ url: '/index' }) 2.wx.reLaunch(Object object) 基础库 1.1.0 开始支持,低版本需做 兼容处理 。 关闭所有页面,打开到应用内的某个页面 参数 Object object 属性 类型 默认值 必填 说明 url string 是 需要跳转的应用内页面路径,路径后可以带参数