回调函数

jquery 实现加载前动画

大憨熊 提交于 2020-04-08 00:29:08
这里主要用$.ajax(options) 这个是jQuery 的底层 Ajax 实现。简单易用的高层实现见 $.get, $.post 等。 $.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。 注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。当设置 datatype 类型为 'script' 的时候,所有的远程(不在同一个域中)POST请求都回转换为GET方式。 $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。 jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。 参数名称 类型 说明 url String (默认: 当前页地址) 发送请求的地址 type String (默认

细说setTimeout/setImmediate/process.nextTick的区别

我们两清 提交于 2020-04-07 19:40:47
Node.js 中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相似,但达到的效果略有区别: 一、事件循环Event Loop 首先,我们需要了解 node.js 的基于事件循环的事件模型,正是因为它才使得node. js 中回调函数十分普遍,也正是基于此,node.js实现了单线程高效的异步IO(这里说的单线程主要说的是执行 JavaScript 代码部分的线程,而异步IO部分node.js其实还是利用线程池去执行的)。 简单的讲就是,在node.js启动时,创建了一个类似while(true)的循环体,每次执行一次循环体称为一次tick,每个tick的过程就是查看是否有事件等待处理,如果有,则取出事件极其相关的回调函数并执行,然后执行下一次tick。所以,有如下代码: A(); B(); C(); 1 2 3 1 2 3 它的执行逻辑是,先询问事件观察者当前是否有任务需要执行?观察者回答“有”,于是取出A执行,A是否有回调函数?如果有(如果没有则继续询问当前是否有任务需要执行),则取出回调函数并执行(注意:回调函数的执行基本都是异步的,可能不止一个回调),执行完回调后通过某种方式通知调用者,我执行完了,并把执行结果给你,你自己酌情处理吧

Vue+Vue-router微信分享功能

十年热恋 提交于 2020-04-07 15:16:09
在使用vue和vue-router路由框架已经开发过好几个项目了,其中也遇到不少坑,有些坑各种搜也没有找到非常理想的答案。 vue学习相对来说还是比较简单,官方文档说明非常清楚( https://cn.vuejs.org/v2/guide/ ),多做一些Demo就可以熟练上手了,并且现在也有好多框架(vuex,MintUI,Element,iView等),根据项目需要自行学则,因此本人也就没有怎么写过关于vue这方面的文章。 这次主要是把自己在微信中分享遇到的问题分享一下,Android机器中分享不会存在问题,主要是IOS分享各种签名,标题、内容、图片不改变问题。 1.微信分享当然要引入微信JS-SDK   微信JS-SDK说明文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115   分享页面引入: http://res.wx.qq.com/open/js/jweixin-1.2.0.js   vue框架可以使用: https://github.com/yanxi-me/weixin-js-sdk 命令: npm install weixin-js-sdk   2.封装一下微信分享的功能,如下: 1 import wx from 'weixin-js-sdk'; 2 import apiUrl

微信应用js-sdk自定义分享图文

大兔子大兔子 提交于 2020-04-06 08:46:03
之前写过步骤 但是代码很少 这里奉献上我自己写的代码 我是用js做的 先奉上js部分的代码 <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>众悦学车无忧险 免费申领</title> <meta name="description" content="李才桃"> <meta name="keywords" content="李才桃"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="no-siteapp" /> <link rel="icon" type="image/png" href="assets/i/favicon.png"> <link rel="stylesheet" href="assets/css/amazeui.min.css"> <link href="css/app.css" rel="stylesheet"

CTP接口

瘦欲@ 提交于 2020-04-06 07:03:59
【前言】对上海期货交易平台CTP接口的一个学习总结.(参考vn.py官方文档) 一、引言   目前本人所在的公司一共有三款平台,分别基于C++, C#和Python。其中C#和Python平台都是由交易员开发;C++平台则是由专职IT团队作为一个通用平台开发,内部组件进行了封装(交易员不可见),对外提供行情、交易的API用于策略开发(除了C++ 外也包括C#和Python可用的API)。 用C++ 开发的交易系统:    理论上这款C++平台应该是最为稳定和强大的,由专业人士设计,同时采用封装核心,暴露API,支持组件模块开发,linux服务器运行的形式。   但是在实际运用中,交易团队表达了一个强烈的观点:这个平台实在是太难用了! 由IT团队设计的API功能非常强大,但是也太过繁琐,导致学习曲线极为陡峭。 为了追求速度,没有设计原生GUI(本来就为了在Linux服务器上跑),但是今天绝大多数的非超高频(追求微秒级延迟的那种)交易策略, 几乎都需要有人实时监控 ,你总不能让交易员盯着个linux shell上不断print出来的内容或者盘中去翻日志吧,这个运维风险就扛不起。尽管可以作为插件的形式开发GUI,但C++本身的GUI开发还是较为复杂的,非专业IT很难搞的定。 交易员团队的需求变化很快,通常等不及IT去排班开发,最好是今天收盘有个点子,明天开盘就能开始接实盘数据验证

js异步执行原理

寵の児 提交于 2020-04-04 11:56:05
我们都知道js是一个单线程的语言,所以没办法同时执行俩个进程。所以我们就会用到异步。 异步的形式有哪些那,es5的回调函数。es6的promis等 异步的运行原理我们可以先看下面这段代码 应该很多人都知道这个打印的值是10个10. 也有知道当我们执行的for循环的时候,他会把for循环执行完成以后再去执行 setTimeout ,在执行 setTimeout 的时候这是时候的i已经变成了10所以就打印10个10。 但是这里面的执行过程是这样的。我们用一个图来做解释 图画的有点丑啊,大致的执行流程就是这样。 在js执行的时候,我们在主线程执行的好好的,然后遇到了一个回调函数,然后他会把这个回调函数异步处理,就是放到事假队列中。 然后我们主线程接着去执行,当主线程执行完成以后,在去执行事件队列里的函数。然后进行返回。 在事件队列里,不存在从上到下进行执行。他会看那一个先执行完成,就直接返回那一个。 什么意思呢。我们看下面这个代码 执行结果为1然后2 当js执行的时候。这俩个会放进事件队列。js是从上往下执行。 所以他会先把1放入事件队列中,然后在放入2. 这就可以看出在事件队列中,谁先执行完成,就返会谁到主线程上。 这也是异步的一个执行过程 来源: https://www.cnblogs.com/chenyudi/p/12630702.html

$q 实例分析 Angular 中的 Promise

耗尽温柔 提交于 2020-04-04 11:40:08
相信有一些开发经验的朋友就应该知道,对于JavaScript而言,promise十分重要,在开发中总能用到。因此掌握好它是一件必须做的事情。 我之前写过一篇文章, 工作总结:jQuery高级应用之Deferred对象 ,介绍jquery中的promise,因此关于promise的基础介绍就不再详细讲解,这篇文章会重点关注angular中promise的实现。 我们首先有一个简单的html标签,下面的例子都会基于这个标签来书写 <div ng-app="app" ng-controller="demoController as demo"></div> $q 在angular中,$q是一个非常重要的service。通过$q,angular有两种比较常用的方式来实现promise,分别是ES6风格与jquery风格。 ES6风格实现 我们直接来看看js代码 angular.module('app', []) .controller('demoController', function($q, $timeout) { var a = 1; $q(function(resolve, reject) { $timeout(function() { if(a == 1) { console.log('resolve'); resolve('hello, JAKE'); } else {

jQuery.getJSON()

大兔子大兔子 提交于 2020-04-04 06:49:43
jQuery.getJSON (url, [data], [callback]) 通过 HTTP GET 请求载入 JSON 数据。 返回值 : XMLHttpRequest 在 jQuery 1.2 中,您可以通过使用JSONP 形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 注意:此行以后的代码将在这个回调函数执行前执行。 参数 : urlString 发送请求地址。 data (可选)Map待发送 Key/value 参数。 callback (可选)Function载入成功时回调函数。 示例 : 描述 : 从 Flickr JSONP API 载入 4 张最新的关于猫的图片。 HTML 代码: <div id="images"></div>jQuery 代码: $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m)

react关于setState的使用

好久不见. 提交于 2020-04-04 00:40:40
参考React官方文档,这里做下笔录 (1)setState语法 setState(updater, [callback])解析:  参数一为带有形式参数的 updater 函数:  参数二为可选的回调函数    1、参数一介绍      注意:当然,它不应直接被修改。你应该使用基于 state 和 props 构建的新对象来表示变化。例如,假设我们想根据 props.step 来增加 state:      updater 函数中接收的 state 和 props 都保证为最新。updater 的返回值会与 state 进行 浅合并 。         所以我们一般在使用时会用其简洁语法 简洁语法格式如下:this.setState({ counter })    2、问题:参数一什么时候使用对象格式、什么时候使用函数格式?   案例如下,两种形式实现累加效果    对象方式是函数方式的简写方式 如果新状态不依赖于原状态 ===> 使用对象方式 如果新状态依赖于原状态 ===> 使用函数方式 如果需要在setState()后获取最新的状态数据, 在第二个callback函数中读取   关于依赖和不依赖,如下:          3、参数二介绍 setState() 的第二个参数为可选的回调函数,它将在 setState 完成合并并重新渲染组件后执行。通常,我们建议使用

JS系列-事件循环机制event Loop

那年仲夏 提交于 2020-04-03 18:45:05
任务   可以分成两种,一种是 同步任务 (synchronous),另一种是 异步任务 (asynchronous)。 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务; 异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。 运行机制如下: (1)所有同步任务都在主线程上执行,形成一个 执行栈 (execution context stack)。 (2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。 (3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。 (4)主线程不断重复上面的第三步。只要主线程空了,就会去读取"任务队列" 任务队列: "任务队列"是一个事件的队列,IO设备完成一项任务,就在"任务队列"中添加一个事件,表示相关的异步任务可以进入"执行栈"了。主线程读取"任务队列",就是读取里面有哪些事件; 除了IO设备的事件以外,还包括一些用户产生的事件(比如鼠标点击、页面滚动等等)。只要指定过回调函数,这些事件发生时就会进入"任务队列",等待主线程读取。 "回调函数