js回调函数原理与用法案例分析


Posted in Javascript onMarch 04, 2020

本文实例讲述了js回调函数原理与用法。分享给大家供大家参考,具体如下:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。

函数指针有两个用途:调用函数和做函数的参数。

作用:

js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。

基本案例:

<script language="javascript" type="text/javascript">
function doSomething(callback) {
  // 调用回调函数
  callback('我', '网名', '叶落森');
}
function foo(a, b, c) {
  //这是回调函数
  alert(a + " " + b + " " + c);
}
doSomething(foo);
</script>

项目中的案例:

vue项目中假设store中this指向没指向到vue,那么就可以用回调函数来实现它的iview的this.$Message效果。(当然这是很傻的。this指向没指向到vue,我们可以把vue引进store后,再new Vue()就行。import Vue from 'vue'      var vuethis=new Vue())

a.js

import {mapActions, mapGetters} from 'vuex';
export default {
  name: 'role',
  data () {
    return {

    };
  },
  computed: {},
  methods: {
    ...mapActions(['getRoleData', 'getPowerData']),
      callbackFn(type,content){//这是回调函数
        if(type){
          this.$Message.success(content)
        }else{
          this.$Message.error({
            content: content,
            duration: 5
          })
        }
      },
      initRoleId () {
         this.getRoleData({path:'http://www.baidu.com/',callbackFn:this.callbackFn});
      }
  },
  mounted(){
    this.initRoleId();
  }
};

store中的js

actions: {
    getRoleData ({commit}, {path,callbackFn}) {
      axios.get(path + 'roles', {params: {pageSize: 500}}).then(res => {
        if(res.data.retCode=="200"){
          commit('ROLE_DATA', {roleData: res.data.data.records});
        }else{
          callbackFn(0,res.data.message)//调用回调函数
        }
      });
    },
}

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
javascript向flash swf文件传递参数值注意细节
Dec 11 Javascript
JS注释所产生的bug 即使注释也会执行
Nov 19 Javascript
javascript不同类型数据之间的运算的转换方法
Feb 13 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
javascript模块化简单解析
Apr 07 Javascript
微信开发 js实现tabs选项卡效果
Oct 28 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
深入理解react-router 路由的实现原理
Sep 26 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
在pycharm中开发vue的方法步骤
Mar 04 #Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 #Javascript
vuex入门最详细整理
Mar 04 #Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 #Javascript
vue 自定义组件的写法与用法详解
Mar 04 #Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 #Javascript
vue请求数据的三种方式
Mar 04 #Javascript
You might like
文件系统基本操作类
2006/11/23 PHP
JS 网站性能优化笔记
2011/05/24 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
javascript window对象属性整理
2009/10/24 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
前端实现打印图像功能
2019/08/27 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
求职信格式范本
2013/11/15 职场文书
初三家长会邀请函
2014/01/18 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
学校党员对照检查材料
2014/08/28 职场文书
《搭石》教学反思
2016/02/18 职场文书