回调函数

[20190807] 回调函数与promise的写法

混江龙づ霸主 提交于 2019-11-26 06:44:05
回调函数的写法: asyncFunction1(callback){ // ... asyncFunction2(callback){ // ... asuncFunction3(callback){ // ... } } } promise的写法 promise1 .then( // ... return promise2 ) .then( // .. return promise3 ) .then( // .. ) 或者 Promise.all([promise1,promise2,promise3]) .then( // ... ) 来源: https://www.cnblogs.com/jimfigo/p/11316714.html

native 之bitmap 保存坑

谁说胖子不能爱 提交于 2019-11-26 03:44:13
之前开发项目的时候遇到几次一键保存二维码,或凭证的需求,但是使用h5 a标签 保存网络图片有些并不支持,于是想到了 使用navite 的bitmap可能会好一些 bitmap js封装后的原生图片对象 它一共有两种方法读取img 一种是使用路径("../../img/img.png")一种是使用base64 1 bitmap=new plus.naviteObj.bitmap();bitmap.load=(paht或base64,successCallback,errorCallback) 获取路径或base64后 因为这个是异步函数,所以问要在其成功回调函数中 写方法 1 successCallback(){ 2 //此时已经读取完毕 3 //将图片保存至内存中 注意这里是内存并非系统,保存在内存中在手机相册 4 //是看不到的 这里我就被坑了 5 bitmap.save('_doc/imgName.png',options,successCallback,errorCallback) 6 } //successCallback 保存成功回调函数 这也是一个异步方法 接下来要使用到 gallery 相册对象 这样才会把bitmap文件保存到系统中 gallery successCallback(e){ //e 是bitmap.save为其成功回调函数自带的一个参数 e

webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)

倖福魔咒の 提交于 2019-11-26 01:00:54
webRTC API WebRTC API 包括媒体捕获、音频视频的编码和解码、传输层和会话管理。 getUserMedia() :捕获音频和视频。 MediaRecorder :录制音频和视频。 RTCPeerConnection :在用户之间传输音频和视频。 RTCDataChannel :用户之间的流数据。 1.媒体捕获MediaStream(又名getUserMedia) MediaStream 接口是一个媒体内容的流.,一个流包含几个 轨道 ,比如视频和音频轨道。作用是从用户本地摄像机和麦克风访问媒体流。 getUserMedia() 方法是访问本机输入设备的主要方式。 第一步是访问用户设备的摄像头和麦克风。我们检测可用设备的类型,获得用户访问这些设备的权限,并管理数据流。 注意: 实时音视频以流对象的形式表示 通过询问用户是否授权,有安全控制,只允许授予一次权限,此后不再要求访问 输入设备选择由 mediaStream 处理 每个 mediaStream 对象包括几个 mediaStreamTRack 对象,代表来自不同设备的音视频 每个 mediaStreamTrack 对象可能包括几个信道(左声道和右声道) 两种方法输出 mediaStream 对象。首先将音视频输出显示,设置 srcObject 属性 将 MediaStream 附加到视频元素,然后将输出发送到

程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发

时光总嘲笑我的痴心妄想 提交于 2019-11-26 00:09:57
一、跨平台开发是趋势 目前主流的移动端平台主要是Android和iOS,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native、阿里的Weex、Cordova,以及今年Google开发者大会上介绍的Flutter框架。这些框架各有优缺点,但是到目前为止都没有大规模地推广开来,在我看来主要有以下几个原因: 1、开发者生态圈还不够成熟 RN是三大跨平台框架中关注人最多、生态最活跃的框架,但是到目前为止也没有到1.0版本(最新的release是0.57.8),更别说作为后来者的Weex和Flutter了。生态不成熟,意味着开发文档少,可以使用的开源控件少,比如在RN上想做一个最基本的下拉刷新和上拉加载更多的listview都比较费劲。Weex已经贡献给Apache,很久没有更新release了。Flutter现在还在beta版本,其发展还有待观察。 2、性能问题 虽然这几大框架都对渲染性能做了优化,但是相比原生还是差一些,RN和weex都自己实现了一个浏览器内核(JSCore),因此多了一层js解析,渲染较慢。比如RN的listview,如果数据量太大就会出现卡顿。Flutter虽然自带绘制引擎,但是跟原生比起来还是有一些距离。 3、兼容问题 虽然这三大平台的初衷都是为了跨平台(Write/Learn once, run

Node.js ---回调函数阻塞/非阻塞

只谈情不闲聊 提交于 2019-11-25 23:02:27
Node.js异步编程是使用回调函数来实现,Node的所有Api都支持回调函数,可以处理大量的并发请求 阻塞:是实例在完成之后才执行程序 非阻塞:不需要等待实例完成,可以在完成实例的过程中同时执行接下来的过程 即阻塞是按照顺序执行的,而非阻塞是不需要按顺序的,所以需要处理回调函数的参数 基本思路:实现一个读取本地文件内容的函数 一、阻塞式 1.创建一个存放文本的文件 index.txt 里面随意写点东西 2.创建一个存放函数的文件 main.js 3.在main.js中引入fs 4.使用异步方法readFileSync(filename) var fs = require ( "fs" ) ; var data = fs . readFileSync ( 'index.txt' ) ; console . log ( data . toString ( ) ) ; console . log ( "程序执行结束" ) 二、非阻塞式 var fs = require ( "fs" ) ; fs . readFile ( 'index.txt' , function ( err , data ) { if ( err ) return console . error ( err ) ; console . log ( data . toString ( ) ) ; } ) ;

【AI基础】python:openCV——处理鼠标事件(1)

与世无争的帅哥 提交于 2019-11-25 23:01:29
一、用户通过鼠标对图像视窗最常见的操作, 例如: 左键单击按下 左键单击抬起 左键按下拖动 鼠标指针位置移动 。。。 二、操作响应事件 setMouseCallback()函数: cv2.setMouseCallback('image',OnMouseAction) OnMouseAction()响应函数: def OnMouseAction(event,x,y,flags,param): Event: EVENT_MOUSEMOVE 0 //滑动 EVENT_LBUTTONDOWN 1 //左键点击 EVENT_RBUTTONDOWN 2 //右键点击 EVENT_MBUTTONDOWN 3 //中键点击 EVENT_LBUTTONUP 4 //左键放开 EVENT_RBUTTONUP 5 //右键放开 EVENT_MBUTTONUP 6 //中键放开 EVENT_LBUTTONDBLCLK 7 //左键双击 EVENT_RBUTTONDBLCLK 8 //右键双击 EVENT_MBUTTONDBLCLK 9 //中键双击 int x,int y,代表鼠标位于窗口的(x,y)坐标位置,即Point(x,y); int flags,代表鼠标的拖拽事件,以及键盘鼠标联合事件,共有32种事件: flags: EVENT_FLAG_LBUTTON 1 //左鍵拖曳 EVENT_FLAG

这一次,彻底弄懂 JavaScript 执行机制

試著忘記壹切 提交于 2019-11-25 22:26:42
本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1'; console.log(a); let b = '2'; console.log(b);复制代码 然而实际上js是这样的: setTimeout(function(){ console.log('定时器开始啦') }); new Promise(function(resolve){ console.log('马上执行for循环啦'); for(var i = 0; i < 10000; i++){ i == 99 && resolve(); } }).then(function(){ console.log('执行then函数啦') }); console.log('代码执行结束');复制代码 依照js是按照语句出现的顺序执行这个理念,我自信的写下输出结果: //

js原生轮播图

爱⌒轻易说出口 提交于 2019-11-25 19:35:27
思路:首先要知道需求,先从简单的地方入手,然后一步一步的去改进,但是首先要想好做每一步目的,原因,不要只知道代码是这么写的,而不去想为什么要这么做。 动画函数封装 function animate(obj, target, callback) { //做动画的对象,需要移动的距离,回调函数 clearInterval(obj.timer); obj.timer = setInterval(function() { var step = (target - obj.offsetLeft) / 10;//缓动动画实现原理 step = step > 0 ? Math.ceil(step) : Math.floor(step); //取整的问题,否者后面会有瑕疵 if(obj.offsetLeft == target){ //判断时候到达位置 clearInterval(obj.timer); //清除定时器 obj.timer = null; //将该对象的定时器设置为空,释放内存 callback && callback(); //如果有回调函数就调用回调函数 } obj.style.left = obj.offsetLeft + step + 'px'; //移动 }, 15); } 1,首先获取几个等会肯定要用到的元素; var arrowLeft = document