回调函数

jq的ajax学习

我只是一个虾纸丫 提交于 2020-03-20 11:51:34
ajax --前后台分离开发 api(程序应用集---数据接口) 局部刷新技术 异步请求(请求和后续代码同时执行) 同步请求(等待请求执行完成在执行后续代码) 专门做后台数据的访问的 先学习原生js的ajax 对象 XMLhttprequest 对象 后台数据访问的对象 原生js在访问后台数据的时候专门写 1.实例化对象 2.open 连接远程服务器 参数: method 请求的方式 get post url:请求的服务器路径 async 当前的请求是同步还是异步 true 异步 false 同步 user 用户名 password 密码 send() 发送请求 4.响应事件onreadystatechange 5.渲染界面 var http = new XMLHttpRequest(); //2.建立服务器连接 http.open("get", "./data/student.txt"); //3.发送请求 http.send(); //4.服务器响应 http.onreadystatechange = function () { //5.界面的渲染 //判断 获取最终读取完成状态 if (http.readyState == 4) { //返回的数据都是string //console.log(typeof http.responseText); console.log

jquery的ajax和getJson跨域获取json数据

半世苍凉 提交于 2020-03-20 04:44:47
很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了。近日在进行开发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器的资源,遂决定直接在html进行数据的读取,不走服务器端进行中转了。然后正好就遇到了浏览器端跨域访问的问题。 跨域的安全限制都是指浏览器端来说的,服务器端不存在跨域安全限制的问题。 目前浏览器端跨域访问常用的两种方法有两种: 1、通过jQuery的ajax进行跨域,这其实是采用的jsonp的方式来实现的。 jsonp是英文json with padding的缩写。它允许在服务器端生成script tags至返回至客户端,也就是动态生成javascript标签,通过javascript callback的形式实现数据读取。 html页面端示例代码: //首先要引入jquery的js包 jQuery(document).ready(function(){ $.ajax({ type : "get", //jquey是不支持post方式跨域的 async:false, url : "http://api.taobao.com/apitools/ajax_props.do", //跨域请求的URL dataType : "jsonp", //传递给请求处理程序

es6-promise

和自甴很熟 提交于 2020-03-19 13:25:49
什么是promise? Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件更合理更强大。Promise,简单说就是一个容器,里面保存着某个未来才会结束的时间(通常是一个异步操作)的结果。 从语法上说,Promise是一个对象,从它可以获取异步操作的消息。promise提供统一的API,各种异步操作都可以用同样的方法进行处理 Promise对象有以下两个特点: 对象的状态不收外界影响。Promise对象代表一个异步操作,有三种状态 pending:初始状态,不是成功或失败的状态 fulfilled: 意味着操作成功完成。 rejected:意味着操作失败。 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是"承诺"的意思,表示其他手段无法改变。 一旦状态改变,就不会在编,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生, 状态就凝固了,不会在改变了,会一直保持这个结果,这时就成为resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全 不同,时间的特点是,如果你错过了它,在去监听

读jQuery源码 - Deferred

烂漫一生 提交于 2020-03-18 11:13:47
Deferred 首次出现在 jQuery 1.5 中,在 jQuery 1.8 之后被改写,它的出现抹平了javascript中的大量回调产生的金字塔,提供了异步编程的能力,它主要服役于 jQuery.ajax 。 Deferred 就是让一组函数在合适的时机执行,在成功时候执行成功的函数系列,在失败的时候执行失败的函数系列,这就是 Deferred 的本质。简单的说,模型上可以规划为两个数组来承接不同状态的函数——数组 resolve 里的函数列表在成功状态下触发, reject 中的函数在失败状态下触发。 本文原创于 linkFly , 原文地址 。 这篇文章主要分为以下知识,和上一篇博文《 读jQuery源码之 - Callbacks 》关联。 什么是Deferred jQuery.Deferred的Promise Deferred的模型与工作原理 jQuery.Deferred的实现 jQuery.Deferred的then() 什么是Deferred 初窥Deferred Deferred本身就是承接一组函数,在异步中执行这组函数,过去的我们是这样编写异步代码的: var resolve = function () { console.log('成功'); }, //定义一个失败状态下运行的函数 reject = function () { console.log(

JavaScript调用App原生代码(iOS、Android)通用解决方案

倖福魔咒の 提交于 2020-03-18 06:57:52
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来。 这个场景应该算是比较完整的一次H5中的JavaScript与App原生代码进行交互了,这个过程,我们制定的方案满足以下几点: 满足基本的交互流程的功能 Android与iOS都能适用 H5的前端开发者,在书写JavaScript的业务代码的时候不需要为了迁就移动端语言的特性而写特殊的磨合代码 方便调试 交互流程 当H5页面上的JavaScript代码要调用原生的页面或者组件的时候,调用最好是双向的,一来一回,这样比较容易满足一些比较复杂的业务场景,就像上面的场景一样,有调用,有回调告知H5调用的结果。前端开发写的JavaScript代码基本上都是异步风格的,就拿上面的场景,如果登录是H5前端的,那么这个流程就会是: function loginClick() { loginComponent.login(function (error,result) { //处理登录完成以后的逻辑 }); } var loginComponent = { callBack:null, "login":function (callBack) { this.show(); this.callBack = callBack; }, show

什么时候需要用的Vue.nextTick()

与世无争的帅哥 提交于 2020-03-17 09:57:36
什么时候需要用的Vue.nextTick() 你在Vue生命周期的 created() 钩子函数进行的DOM操作一定要放在 Vue.nextTick() 的回调函数中。原因是什么呢,原因是在 created() 钩子函数执行的时候DOM 其实并未进行任何渲染,而此时进行DOM操作无异于徒劳,所以此处一定要将DOM操作的js代码放进 Vue.nextTick() 的回调函数中。与之对应的就是 mounted 钩子函数,因为该钩子函数执行时所有的DOM挂载和渲染都已完成,此时在该钩子函数中进行任何DOM操作都不会有问题 。 在数据变化后要执行的 某个操作 ,而这个 操作 需要使用随数据改变而改变的DOM结构的时候,这个 操作 都应该放进 Vue.nextTick() 的回调函数中。 原因是,Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。而在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。 当你设置 vm.someData = 'new value',DOM 并不会马上更新,而是在异步队列被清除

JQuery学习笔记之事件绑定和切换(六)

这一生的挚爱 提交于 2020-03-16 19:49:25
概述 (一)jquery标准的绑定方式 (二)on绑定事件/off解除绑定 (三)事件切换:toggle (一)jquery标准的绑定方式 语法:jq对象.事件方法(回调函数); 注意:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为 表单对象.submit();//让表单提交 代码 : < ! DOCTYPE html > < html > < head > < meta charset = "UTF-8" > < title > < / title > < script src = "../js/jquery-3.3.1.min.js" type = "text/javascript" charset = "utf-8" > < / script > < script type = "text/javascript" > $ ( function ( ) { //(一)获取name对象,绑定click事件 // $("#name").click(function () { // alert("我被点击了。。。") // }); //(二)给name绑定鼠标移动到元素之上的事件,再绑定一个鼠标移出事件 // $("#name").mouseover(function () { // alert("鼠标来了。。。"); // }); // $("#name")

视频捕获C#实现,之两种方法

喜夏-厌秋 提交于 2020-03-16 15:05:21
方法一 视频捕获是指由专用的视频采集卡捕获声频和视频信息,然后将其进行数据化处理,再经过软件的压缩进行处理,这时就可对这些数据进行保存、回放、传输等各种操作。 Windows专门提供了Video for Windows来对视频处理进行支持,提供的接口可以被大多数的视频采集卡支持,并有多种视频压缩驱动供选择(当然视频压缩可以自己开发),采集卡支持摄像头,TV等多种输入。 当你创建了一个AVICap类的捕捉窗口并将它连接到一个视频驱动时, 此捕捉窗口即可以开始捕捉数据, 你的程序可以简单的发送WM_CAP_SEQUENCE消息(或者使用capCaptureSequence宏)来开始捕捉.如果是缺省的设置, WM_CAP_SEQUENCE会开始捕捉视频音频流到CAPTURE.AVI文件中, 直到下面的某一事件发生为止: 用户按下了ESC键或者一个鼠标键 你的应用程序终止或异常中断捕捉操作,主要步骤有: 1.创建捕获窗口(CREATING A CAPTURE WINDOW) 8 2.连接到捕获驱动(CONNECTING TO A CAPTURE DRIVER) 9 3.列举所有已安装的捕获驱动(ENUMERATING INSTALLED CAPTURE DRIVERS) 9 4.得到捕获驱动的性能(OBTAINING THE CAPABILITIES OF A CAPTURE DRIVER

池和回调函数

十年热恋 提交于 2020-03-15 13:55:12
池和回调函数 使用线程池和进程池的原因: 减少时间:在池中可以提前开几个线程线程不关闭,程序运行的时候可以直接使用线程,减少线启动和关闭的时间。 减少开销:有大量程序需要处理的时候如果使用多线程去处理,那么会需要开启很多的线程,如果超出CPU+1的数量,那么会造成程序执行效率低下。 但是如果使用线程池和进程池,开启固定的线程和进程来处理,则会减少开销,降低消耗。 concurrent.futures模块 python3,4模块之前进程池使用的是processing模块中的Pool类来实现的,线池threading模块中没有Pool类,如果使用需要开发者自己去编写。但是从python3.4之后的版本 进程和线程池都是通过使用concurrent.futures模块来进行的。 基本的使用: 导入模块:from concurrent_futures import ThreadPoolExecutor/ProcessPoolExecutor 实例化池对象: 线程池:tp = ThreadPoolExecutor() 进程池:pp = ProcessPoolExecutor() 提交任务:tp/pp.submit(func, *args, **kwargs) import time from threading import current_thread from concurrent