回调函数

reduce()的使用

被刻印的时光 ゝ 提交于 2019-12-16 17:09:03
reduce 方法 对数组中的所有元素调用指定的回调函数。 该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。 语法 array1.reduce(callbackfn[, initialValue]) array1 必需。一个数组对象。 callbackfn 必需。一个接受最多四个参数的函数。 nitialValue 可选。如果指定 initialValue,则它将用作初始值来启动累积。 返回值 通过最后一次调用回调函数获得的累积结果。 异常 当满足下列任一条件时,将引发 TypeError 异常: callbackfn 参数不是函数对象。 数组不包含元素,且未提供 initialValue。 备注 如果提供了 initialValue,则 reduce 方法会对数组中的每个元素调用一次 callbackfn 函数(按升序索引顺序)。 如果未提供 initialValue,则 reduce 方法会对从第二个元素开始的每个元素调用 callbackfn 函数。 回调函数语法 回调函数的语法如下所示: function callbackfn(previousValue, currentValue, currentIndex, array1) 下面来看几个小例子,加深对该方法的理解 栗子1:将数组元素变成字符串拼接 //不传initialValue

promise, async和await

杀马特。学长 韩版系。学妹 提交于 2019-12-16 12:40:00
最开始实现异步的方法:回调函数 method1(function(err, result) { if (err) { throw err; } method2(function(err, result) { if (err) { throw err; } method3(function(err, result) { if (err) { throw err; } method4(function(err, result) { if (err) { throw err; } method5(result); }); }); }); }); 回调地狱一层一层嵌套多个回调函数,会使代码错综复杂,难以理解和调试。 promise promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件,更合理更强大。所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,promise是一个对象,可以获取异步操作的消息,提供统一的API,各种异步操作都可以用同样的方法进行处理。 特点:1、对象状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。 2

动手搞一个Promise

被刻印的时光 ゝ 提交于 2019-12-16 01:47:05
动手搞一个Promise 1600174884 Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。 为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。 异步模式"编程的4种方法: 回调函数、事件监听、发布/订阅、Promises对象 。 还有generator、async/await . 本文尝试说一下对Promise的理解及如何实现。 1.Promise原理 promise对象有三种状态,pending、fulfilled和rejected。promise对象内部保存一个需要执行一段时间的异步操作, 当异步操作执行结束后可以调用resolve或reject方法,来改变promise对象的状态 ,状态一旦改变就不能再变。new一个promise后可以通过then方法

小程序之路由跳转

泄露秘密 提交于 2019-12-15 14:40:15
1小程序路由跳转 1.1 wx.switchTab(Object object) 这里的tabBar是底下的导航栏指定的页面, 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 参数 Object object 属性 类型 默认值 必填 说明 url string 是 需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数。 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete function 否 接口调用结束的回调函数(调用成功、失败都会执行) 示例代码 { "tabBar": { "list": [ { "pagePath": "index", "text": "首页" }, { "pagePath": "other", "text": "其他" } ] } } wx.switchTab({ url: '/index' }) 1.2wx.reLaunch(Object object) 基础库 1.1.0 开始支持,低版本需做 兼容处理 。 关闭所有页面,打开到应用内的某个页面 参数 Object object 属性 类型 默认值 必填 说明 url string 是 需要跳转的应用内页面路径,路径后可以带参数

PWA 学习笔记(三)

喜欢而已 提交于 2019-12-14 01:42:27
基础技术简介 Promise: 1、ES6 引入的一种 异步编程的解决方案 ,通过 Promise 对象来提供 统一 的异步状态管理方法 2、一般在使用 Promise 对象的时候,首先需要对其进行 实例化 3、实例化的 Promise 对象为异步状态的 管理容器 , resolve() 和 reject() 是用于 控制 promise 状态 的方法 4、在调用 resolve()和reject()方法的时候可 传入任意值 ,这个值会作为监听状态变更的 回调函数的参数透传出去 5、Promise 提供了 .then(onFulfilled, onRejected) 和 .catch(onRejected)等 原型链方法用于 注册状态变更所触发的回调函数 let promise = new Promise((resolve, reject) => { if (/* 操作成功 */) { resolve(value) } else { reject(error) } }) Promise 状态: 1、' pending ':初始状态,代表异步过程仍在进行中,尚未判定成功或者失败 2、' fulfilled ':操作成功,通过调用 resolve() 方法,promise 状态将由 'pending' 变更为 'fulfilled' 3、' rejected ':操作失败,通过调用

ES6箭头函数

倾然丶 夕夏残阳落幕 提交于 2019-12-13 02:41:15
()=>{} demo: Vue中的method属性 好处: 在如下demo中 回调函数用箭头函数的形式 解决了this的作用域问题; 在箭头函数中 this纸箱根函数refreshToken; method:{ refreshToken(){ //apiCloud中刷新微信Token: let wxPlus = api.require('wxPlus'); wxPlus.refreshToken({ apiKey: '', dynamicToken: '' }, (ret, err)=> { if (ret.status) { //获取新的token,再次获取用户信息 this.getWechatUserInfo(ret.accessToken, ret.openId, ret.dynamicToken); } else { zs.toast(msg[err.code]); } }); }, } 来源: CSDN 作者: a流逝的好时光 链接: https://blog.csdn.net/weixin_44539537/article/details/103497395

回调函数使用详解

最后都变了- 提交于 2019-12-12 13:04:44
转载自: https://blog.csdn.net/miao19920101/article/details/75648491 回调函数的使用 回调函数在C语言中是通过函数指针来实现的,通过将回调函数的地址传给被调函数从而实现回调。因此,要实现回调,必须首先定义函数指针。 1. 回调指针 概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。 1. 采用函数调用的一般形式 首先看一个hello world!的程序: int application_start( void ) { OSStatus err = kNoErr; char *s ="hello world !"; app_log(" s:%s",s); return err; } 打印的结果是: [0][TCP: main.c: 90] s:hello world ! 如果采用函数调用的形式来实现: //声明 void Islog( char *s); int application_start( void ) { OSStatus err = kNoErr; Islog("hello world !")

Promise对象

别说谁变了你拦得住时间么 提交于 2019-12-12 12:49:52
概述 Promise 对象是 JavaScript 的异步操作解决方案,为异步操作提供统一接口。它起到代理作用(proxy),充当异步操作与回调函数之间的中介,使得异步操作具备同步操作的接口。Promise 可以让异步操作写起来,就像在写同步操作的流程,而不必一层层地嵌套回调函数。 注意,本章只是 Promise 对象的简单介绍。为了避免与后续教程的重复,更完整的介绍请看《ES6 标准入门》的《Promise 对象》一章。 首先,Promise 是一个对象,也是一个构造函数。 function f1(resolve, reject) { // 异步代码... } var p1 = new Promise(f1); 上面代码中,Promise构造函数接受一个回调函数f1作为参数,f1里面是异步操作的代码。然后,返回的p1就是一个 Promise 实例。 Promise 的设计思想是,所有异步任务都返回一个 Promise 实例。Promise 实例有一个then方法,用来指定下一步的回调函数。 var p1 = new Promise(f1); p1.then(f2); 上面代码中,f1的异步操作执行完成,就会执行f2。 传统的写法可能需要把f2作为回调函数传入f1,比如写成f1(f2),异步操作完成后,在f1内部调用f2。Promise 使得f1和f2变成了链式写法

Ajax不执行回调函数

Deadly 提交于 2019-12-12 07:21:09
最近在启动一个旧项目时,发现了一个问题:点击按钮对数据进行修改,后台方法执行了,参数也修改了,但是页面没有跳转,也无任何提示信息,并且当前修改页面还自动刷新了。进入F12,网页没有报错。于是就打开代码查看,发现是ajax没有执行回调函数。 初步怀疑是因为后台方法执行出错,于是进入debug模式进行调试,确认没有问题。上网查看了相关的文章Ajax不执行回调函数大致原因可能是: 1.ajax同步异步问题。 因为Ajax默认是异步的,所以可能是后台方法还未执行完,就已经执行了 Ajax请求后面的操作。在Ajax请求里设置async: false,把异步改成同步。如果是用 . g e t 或 者 .get或者 . g e t 或 者 .post就在方法前面加上$.ajaxSettings.async = false;由于不需要用到data来判断方法是否成功,所以也不是这个原因。 2.后台返回类型不一致。 网上说如果设置的是Json类型,返回的也要是Json类型。进入F12,对网页打断点,发现提交的Ajax请求,并没有设置参数类型,因此不是这个原因。 3.提交按钮要用Button来代替submit。 潜意识里觉得这个意思是说标签里,类型要用Button来代替submit。但我使用的是Button标签,不就是Button按钮吗?而实际上如果Button标签没有设置type=“button”

来吧!一文彻底搞定Vue组件!

孤人 提交于 2019-12-11 23:27:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 | Jeskson 来源 | 达达前端小酒馆 Vue组件的概述 组件是什么呢,了解组件对象的分析,Vue组件中的data属性,props传递数据的原理到底是什么。 事件通信的那些事 如何了解父子组件事件通信,和遇到非父子组件事件通信如何处理。 组件类型又是什么鬼 自定义组件双向绑定v-model,动态组件,又是如何称为动态的,为啥是动态呢,递归组件,如何理解递归。 Vue组件的了解 Vue的理解,可以找我上一篇vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础,组件是什么,组件就是自己写好的一部分封装好的功能,自己写的叫组件,别人写的叫插件,组件的运用,是vue.js强大的功能之一,组件的出现是为了提高代码的可重用性,组件是一部分完整好的,如果要使用,你可以放到你自己任何的项目上去,减少代码的重复书写。 直接在你要用的地方引入即可,是不是减少了重复性开发,可以把组件的代码按照template,style,script的拆分形式,放到对应的文件中。 template是什么?它是模板(template),模板是声明了数据和最终展现给用户的dom之间的映射关系,初始化数据data是什么?一个组件的初始数据状态,对于可以重复使用的组件来说,通常是私有的状态,方法methods是对数据进行操作的方法