回调函数

html5+mui app

十年热恋 提交于 2020-03-05 19:17:53
html+mui 本文仅用于个人学习,感谢批评指正 webview Webview模块管理应用窗口界面,实现多窗口的逻辑控制管理操作。通过plus.webview可获取应用界面管理对象。 属性: isRecovery: 当前Webview窗口是否由于内核崩溃自动恢复 方法: all :获取所有Webview窗口 close :关闭Webview窗口 create :创建新的Webview窗口 currentWebview :获取当前窗口的WebviewObject对象 getDisplayWebview : 获取屏幕所有可视的Webview窗口 getWebviewById :查找指定标识的WebviewObject窗口 getLaunchWebview :获取应用首页WebviewObject窗口对象 getSecondWebview :获取第二个首页WebviewObject窗口对象 getTopWebview :获取应用栈顶的WebviewObject窗口对象 hide :隐藏Webview窗口 open :创建并打开Web窗口 postMessageTouniNView :向uniNView窗口发送消息 prefetchURLS :预载网络页面 prefetchURLS :预载多个网络页面 show :显示Webview窗口 startAnimation

异步同步、阻塞非阻塞、异步回调、线程队列和协程

六月ゝ 毕业季﹏ 提交于 2020-03-04 15:35:34
  今天学习了异步同步、阻塞非阻塞、异步回调、线程队列和协程   一、异步同步和阻塞非阻塞   线程的三种状态:     1、就绪     2、运行     3、阻塞   阻塞:遇到了IO操作 代码卡住 无法执行下一行 CPU会切换到其他任务   非阻塞: 与阻塞相反 代码正在执行(运行状态) 或处于就绪状态   阻塞和非阻塞描述的是运行的状态   同步:提交任务必须等待任务完成,才能执行下一行   异步:提交任务不需要等待任务完成,立即执行下一行   指的是一种提交任务的方式   二、异步回调     为什么回调:子进程帮助主进程完成任务 处理任务的结果应该交还给主进程     其他方式也可以将数据交还给主进程       1、shutdown 主进程会等到所有任务完成       2、result函数 会阻塞直到任务完成     注意:       回调函数什么时候被执行?子进程完成时       谁在执行回调函数?主进程     线程的异步回调       使用方式都相同 唯一的不同是执行回调函数 是子线程在执行 #进程利用回调完成生产者消费者from concurrent.futures import ProcessPoolExecutor import os pool = ProcessPoolExecutor() #爬虫 从网络某个地址获取一个HTML文件 import

nodejs 实现套接字服务

风流意气都作罢 提交于 2020-03-04 09:51:19
nodejs实现套接字服务 一 什么是套接字 1.套接字允许一个进程他通过一个IP地址和端口与另一个进程通信,当你实现对运行在同一台服务器上的两个不同进程的进程间通信或访问一个完全不同的服务器上运行的服务时,套接字很有用。node提供的net模块,允许你既创建套接字服务器又创建可以连接到套接字服务器的客户端。 2.套接字位于HTTP层下面并提供服务器之间的点对点通信。套接字使用套接字地址来工作,这是IP地址和端口的组合。在套接字连接中,有两种类型的点:一类是服务器,它监听连接;一类是客户端,它打开一个到服务器的连接。服务器和客户端都需要一个唯一的IP地址和端口的组合。 3.套接字是HTTP模块的底层结构,如果你不需要处理如get何post的web请求,只需要点对点的传输数据,那么使用套接字就可以就能为你提供一个轻量级的解决方案和更多的控制。 二 net.Socket对象 1.Socket对象同时在套接字服务器和客户端套接字上创建,并允许数据在它们之间来回写入和读取。在套接字客户端,当你调用net.connect()或net.createConnection()时,Socket对象在内部创建,这个对象是为了表示到服务器的套接字连接。使用Socket对象来监控连接,将数据发送到服务器并处理来自服务器的响应。在套接字服务器上,当客户端连接到服务器时,Socket对象被创建

同源策略以及回调地狱和方法

狂风中的少年 提交于 2020-03-04 07:18:51
#同源策略 1 同源策略就是浏览器发送请求给的限制。 触发同源策略的条件:传输协议、域名、端口号,任意一个不一样搜会触发,对于触发同源策略的请求就叫做跨域请求。 2 跨域请求的三种方式 Jsonp跨域请求–src的引入 Cors跨域资源共享,由服务端进行配置,表示允许某一客户端的请求,客户端依旧使用ajax方式进行发送请求。 代理跨域:-浏览器不允许、非同源的请求。 (1)Jsonp中 ① script标签会把请求回来的所有内容当做js代码执行 ② Script标签默认有type属性,值是text/javascript,不管src请求什么文件,都会把文件里的内容当做字符串读取。 ③ Script标签放入src属性不受同源策略的影响。 ④ Jsonp.php中,只要有php标签对,就会按照php代码解析,没有php标签,就会按照字符串交给script标签。 (2)Cors跨越 Cors跨越是浏览器不让我们请求其他服务器,如果其他服务器告知浏览器可以请求,那么才不会阻止。 <?php // 以下三个可以实现cors的跨域请求,资源共享 header("Access-Control-Allow-Origin:*");//允许哪些域名请求 header("Access-Control-Request-Methods:GET, POST, PUT, DELETE, OPTIONS");/

数组对象的21种常用方法

眉间皱痕 提交于 2020-03-03 19:39:52
1.concat 连接两个或多个数组,返回一个新的数组,且对其他数组不造成影响 返回值:返回一个新的数组 参数:用于连接的数组名 可以是多个也可以是一个 2.every 检测数组中的每个元素是否都符合条 件 返回值: 如果数组中有一个不符合就返回 false 全部符合就返回 true 参数: 两个参数 第一个参数是一个回调函数(参数是一个函数) 第二个参数是一个对象,可选,用于替换回调函数中的 this 这里的obj,把回调函数callback的指向window改成了对象obj 控制台输出的也就是对象obj 3.filter 检测数组中的元素,返回符合条件的元素构成的新的数组 返回值:返回的是一个新的数组 参数: 第一个是 callback 4.find 将数组中的每个元素都调用一次,然后返回第一个符合条件的元素 返回值:返回的是第一个符合条件的元素 参数:第一个是callback,必须要有返回值 第二个是用来替换this指向的 5.findIndex 用法与find一样,不一样的是findIndex是将数组中的每一个元素执行一次,返回第一个不符合条件的元素 6.forEach 调用函数中的每一个元素并将元素传递给callback forEach跟for循环一样 遍历每个元素 没有返回值 参数:第一个参数是callback     第二个是用来替换callback中this的对象

Promise

冷暖自知 提交于 2020-03-03 03:32:26
文章目录 1. 概念 2. 特点 3. 状态 4.缺点 5. 基本用法 6. ajax 请求 7. then 方法 8. 链式操作的用法 9. catch() 10. resolve与reject方法 11. Promise.all() 12. Promise.race() 1. 概念 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 所以Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 2. 特点 对象的状态不受外界影响。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。 3. 状态 Promise 对象代表一个异步操作,有三种状态: pending (进行中)、 resolved (已成功)和 rejected (已失败)。 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。 4.缺点 无法取消 Promise ,一旦新建它就会立即执行,无法中途取消。 如果不设置回调函数, Promise 内部抛出的错误,不会反应到外部。 当处于 pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。 5. 基本用法 var a = 1 ; let promise = new Promise ( function ( resolve ,

js异步处理(一)——理解异步

霸气de小男生 提交于 2020-03-03 00:14:50
简书地址:http://www.jianshu.com/p/f4abe8c4fc2f 我对异步的好奇心起于学习Promise时老是一知半解,最近在看《你所不知道的js(中)》,书中对异步这部分的讲解还是很到位的,所以结合自己的理解整理一下相关知识点。 本文将从是什么、为什么、怎么样这三步式来讲这个问题 一、什么是异步? 我们一般喜欢把异步和同步、并行拿出来比较,我以前的理解总是很模糊,总是生硬地记着“同步就是排队执行,异步就是一起执行”,现在一看,当初简直就是傻,所以我们第一步先把这三个概念搞清楚,我不太喜欢看网上有些博客里很含糊地说“xxxx是同步,xxxx是异步”,还有举什么通俗的例子,其实对不懂的人来说还是懵逼。 首先我们要知道这一切的根源都是“Javascript是单线程”,也就是一次只能做一件事,那么为什么是单线程呢?因为js渲染在浏览器上,包含了许多与用户的交互,如果是多线程,那么试想一个场景:一个线程在某个DOM上添加内容,而另一个线程删除这个DOM,那么浏览器要如何反应呢?这就乱套了。 单线程下所有的任务都是需要排队的,而这些任务分为两种:同步任务和异步任务,同步任务就是在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程

以基于Reactor模式的高并发EchoServer为例剖析muduo库框架

£可爱£侵袭症+ 提交于 2020-03-02 17:40:49
前言 在讲解基于muduo库的高并发echo服务器之前,我们先来回顾一下我们一般编写基于Reactor模式的高并发服务器的基本流程。 muduo的EchoServer其实也是基于上述流程,只不过进行了一定程度地封装,本质上仍是Reactor模式。muduo的example中的echo服务器代码展示的是只有一个reactor的服务器,muduo其实支持one loop per thread + 线程池的模式,也即multiple reactors + 业务线程池的模式,也就是服务器同时有多个IO线程,其中Acceptor所在的IO线程成为mainReactor,其他的IO线程成为subReactor,mainReactor主要负责处理监听描述符listenfd的上的时间,也就是负责处理客户端的连接请求。而subReactor主要负责已连接描述符connfd上的事件,也就是在和客户端建立好连接之后负责处理和客户端的具体通信。mainReactor+subReactor是由多个IO线程实现的,在muduo库当中,其通过在IO线程池中设置是让其工作在单IO线程模式还是多IO线程模式。而所谓的业务线程池主要是指计算线程池,其主要负责处理具体的业务逻辑,不涉及具体的IO操作。 在认真阅读完一遍muduo库源码之后,我认为如果想基于muduo库编写一个单线程版的echo服务器

jQuery的map静态方法

喜你入骨 提交于 2020-03-01 19:54:45
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>10-jQuery的静态方法的map方法</title> <script src="../js/jquery-3.4.1.js"></script><script> var arr=[1,3,5,7,9]; var obj={0:1,1:3,2:5,3:7,4:9,length:5}; /** * 第一个参数当前遍历到的元素 * 第二个参数当前遍历到的索引 * 第三个参数当前便利到的数组 * 注意点: * 和原生的forEach一样不能遍历伪数组 */ /* arr.map(function (value,index,array) { console.log(index,value,array); });*/ /*obj.map(function (value,index,array) { console.log(index,value,array); });*/ /** * 第一个参数:要遍历到的数组 * 第二个参数:每遍历一个元素之后执行的回调函数 * 回调函数 * 第一个参数:遍历到的元素 * 第二个参数:遍历到的索引 * 注意点: * 和jQuery的each静态方法一样 map也可以遍历伪数组 */ /*$.map(arr

大厂面试题手写Promise源码

筅森魡賤 提交于 2020-03-01 19:45:32
手写Promise源码几乎是每个大厂面试要求必会的一个考点,每次听到源码,总有一种让人上头的感觉,因为自己从来没有实现过,总感觉这东西很难实现,最近再为跳槽做准备,从头写学了一下基础知识,手写了call源码、apply源码、Promise源码,感觉还挺有意思,不是想想的那么难。就是一个js的简答实现。只要优点js基础的人都能手写出来,所以不要一听“源码”二字就给吓到。自己动手实现一遍,比看别人的几十遍的效果更好。 本篇文章从实际应用角度思考Promise是怎样的一个实现过程,会先从简单的应用出发,然后一点一点去完善整个代码。 先来一个简单的例子: //刚开始是等待态,pending let promise = new Promise( (resolve,reject) =>{if(err) return reject(err) //失败了返回失败信息 失败态 resolve(data) //成功了返回数据 成功态 }) //状态改变了调用 promise.then(data=>{ //成功了调用 console.log(data) },err=>{ //失败了调用 console.log(err) }) 这是一个promise实例,它有三种状态,pending(等待态)、fullfilled(成功态)、rejected(失败态),resolve为成功时调用,状态由等待态变为成功态