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 相关文章推荐
在线游戏大家来找茬II
Sep 30 Javascript
js兼容标准的表格变色效果
Jun 28 Javascript
用Javascript实现Sleep暂停功能代码
Sep 03 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
Sep 13 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
Javascript的表单验证长度
Mar 16 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
Vue实现滑动拼图验证码功能
Sep 15 Javascript
vue 弹出遮罩层样式实例
Jul 22 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
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
JS常见算法详解
2017/02/28 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python生成日历实例解析
2014/08/21 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Python PyQt5整理介绍
2020/04/01 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
计算机应用职专应届生求职信
2013/11/12 职场文书
事业单位请假制度
2014/01/13 职场文书
九年级化学教学反思
2014/01/28 职场文书
心理健康日活动总结
2014/05/08 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
Nginx配置之禁止指定IP访问
2022/05/02 Servers