callback

Node.js编程之异步

别来无恙 提交于 2020-03-06 15:00:16
异步操作 Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。 由于这种特性,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。 var isTrue = function(value, callback) { if (value === true) { callback(null, "Value was true."); } else { callback(new Error("Value is not true!")); } } 上面代码就把进一步的处理,交给回调函数callback。 如果没有发生错误,回调函数的第一个参数就传入null。这种写法有一个很大的好处,就是说只要判断回调函数的第一个参数,就知道有没有出错,如果不是null,就肯定出错了。另外,这样还可以层层传递错误。 Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。 var callback = function (error, value) { if (error) { return console.log

25个JavaScript数组方法代码示例

岁酱吖の 提交于 2020-03-05 16:03:46
摘要: 通过代码掌握数组方法。 原文: 通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏) 译者:前端小智 Fundebug 经授权转载,版权归原作者所有。 要在给定数组上使用方法,只需要通过 [].方法名 即可,这些方法都定义在 Array.prototype 对象上。在这里,咱们先不使用这些相,反,咱们将从简单的方法开始定义自己的版本,并在这些版本的基础上进行构建。 没有比把东西拆开再重新组装起来更好的学习方法了。注意,当咱们的实现自己的方法时,不要覆盖现有的方法,因为有的库需要它们,并且这样也方便比较咱们自己的方法与原始方法的差异。 所以不要这样命名咱们自定义的方法: Array.prototype.map = function map() { // implementation }; 最好这样命名: function map(array) { // implementation } 咱们也可以通过使用 class 关键字并扩展 Array 构造函数来实现咱们的方法,如下所示: class OwnArray extends Array { public constructor(...args) { super(...args); } public map() { // implementation return this; } } 唯一的区别是

Android:异步处理之Handler+Thread的应用(一)

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-04 07:48:42
前言   如果你在阅读本文之前,你不知道Handler在Android中为何物,我建议你先看看本系列的第一篇博文《 Android:异步处理之Handler+Thread的应用(一) 》;我们都知道在Android系统中不能在子线程中直接更新UI界面,所以我们一般借助Handler+Thread或者AsyncTask这两种方法来实现UI界面的更新。而Handler+Thread这方法其实就是子线程向UI主线程进行消息传递,通知UI主线程去更新界面的一套机制。因为有时候面试官比较喜欢和蔼可亲的考你Handler的这套机制,所以我们结合源代码深入的研究这套通讯机制是灰常有必要的,你想想如果能鄙视一下面试官,呵呵o(╯□╰)o。。 概述   谷歌的这套消息机制是参考windows设计的,姑爷微爷之间有啥专利官司咱也不关心。一般来说,线程都会通过Looper来建立自己的消息循环,并且锁定一个FIFO的消息队列MessageQueue,Handler通过Looper来实现Message(消息)在MessageQueue中的存取。每一个Hanlder在实例化的时候都会自动或者手动绑定一个Looper,间接向一个MessageQueue发送Message,所以Handler也封装了消息发送和接收的接口。 入门例子   看概述好闷的,琢磨文字不说,晦涩又难懂,记得住又成一个大问题

H5定位终极解决方案

旧街凉风 提交于 2020-03-03 23:16:57
H5定位终极解决方案 背景 做一个H5的微商城,主要在微信内,但也要考虑到其他浏览器。其中,首页需要根据当前用户的经纬度找到距离最近的门店并展示。前端需要做的工作就是获取用户的经纬度然后查询后台接口并渲染页面。 目标与分析 我们的目标是经过封装之后,只需要调用一个方法就可以拿到返回的位置信息。 我们需要做的事情是,针对不同的端(微信H5和其他浏览器环境)封装不同的类,再通过一个方法通过 UA 区分,调用不同环境对应的类获取位置。 在微信内部,经过反复的实践之后,不论是通过原生的 HTML5 定位,还是通过第三方(如百度或腾讯地图) jsapi 获取位置,不仅定位时间长,甚至经常出现定位失败的情况,严重影响用户体验,尤其对于大部分信息流都依赖于用于位置的商城首页来说,是完全无法接受的。所以在微信内我们只有微信 sdk 这一种选择; 而对于浏览器端,通过第三方的地图 jsapi 或定位组件,可以稳定且较快速地获取位置信息,为了与微信内尽量保持一致,我们选择的是腾讯地图 jsapi。 解决方案 Talk is cheap, show me the code. 废话不多说,直接上代码: 在浏览器中,通过腾讯地图jsapi获取位置 1.1 在项目的 html 模版文件中引入腾讯地图 jsapi <!-- index.html --> <script charset="utf-8" src="

数组对象的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的对象

How to break the Word2vec training from a callback function?

老子叫甜甜 提交于 2020-03-03 09:07:24
问题 I am training a skipgram model using gensim word2vec. I would like to exit the training before reaching the number of epochs passed in the parameters based on a specific accuracy test in a different set of data in order to avoid the overfitting of the model. Is there a way in gensim to interrupt the train of word2vec from a callback function? 回答1: If in fact more training makes your Word2Vec model worse on some external evaluation, there is likely something else wrong with your setup. (For

How to break the Word2vec training from a callback function?

半腔热情 提交于 2020-03-03 09:06:27
问题 I am training a skipgram model using gensim word2vec. I would like to exit the training before reaching the number of epochs passed in the parameters based on a specific accuracy test in a different set of data in order to avoid the overfitting of the model. Is there a way in gensim to interrupt the train of word2vec from a callback function? 回答1: If in fact more training makes your Word2Vec model worse on some external evaluation, there is likely something else wrong with your setup. (For

Unity的网络常用功能

ε祈祈猫儿з 提交于 2020-03-03 06:34:16
public class WebManager : MonoBehaviour { # region 单例模式控制web请求相关 private static WebManager _mgr = null; float startTime = 0; public static WebManager _instance { get { if (_mgr == null) { GameObject mgrGo = new GameObject("WebManager"); _mgr = mgrGo.AddComponent<WebManager>(); } return _mgr; } set { _mgr = value; } } #endregion //UnityWebRequest请求方式 common public void SendRequest(string url,byte[]postData,Dictionary<string,string> headerDic,Action<UnityWebRequest> callback) { startTime = Time.realtimeSinceStartup; StartCoroutine(CoroutineRequest(AppConst.BaseUrl+url, postData, headerDic,

WebViewJavascriptBridge详细使用

旧街凉风 提交于 2020-03-03 02:17:48
WebViewJavascriptBridge详细使用 源网址: https://www.cnblogs.com/jiang-xiao-yan/p/5345755.html 前言 WebViewJavascriptBridge是支持到iOS6之前的版本的,用于支持native的iOS与javascript交互。如果需要支持到iOS6之前的app,使用它是很不错的。本篇讲讲WebViewJavascriptBridge的基本原理及详细讲讲如何去使用,包括iOS端的使用和JS端的使用。 经过多番百度、Google,发现WebViewJavascriptBridge的资源讲解不是翻译官方文档就是直接说官方提供的demo。但是笔者在写这个demo时也遇到了不少问题,也想看看大家是怎么使用的,特别是JS端,弄了好久都没有回调,原来是因为log。 写下本篇文章,希望大家少走弯路吧! 本Demo效果图 iOS与H5交互的方案 纵观所有iOS与H5交互的方案,有以下几种: 第一种:有很多的app直接使用在webview的代理中通过拦截的方式与native进行交互,通常是通过拦截url scheme判断是否是我们需要拦截处理的url及其所对应的要处理的功能是什么。任意版本都支持。 第二种:iOS7之后出了JavaScriptCore.framework用于与JS交互,但是不支持iOS6

h5页面与原生app页面交互

十年热恋 提交于 2020-03-03 02:17:26
两端交互安卓:https://github.com/lzyzsd/JsBridge IOS:https://github.com/marcuswestin/WebViewJavascriptBridge 两者一起用的话会起冲突,需要判断一下是什么终端,然后分别调用, var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 以下为安卓和ios调用原生app端开通vip的页面,‘AndroisVipFun’,‘IosisVipFun’这两个为安卓和ios定义的函数名称供web端页面调用,(这里是不需要传递参数的) ...}else if(isAndroid){ window.WebViewJavascriptBridge.callHandler('AndroisVipFun'); }else if(isiOS){ // alert('IOS不是VIP,跳去VIP页面') this.setupWebViewJavascriptBridge(function(bridge) { bridge