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 相关文章推荐
一个不错的用JavaScript实现的UBB编码函数
Mar 09 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
使用jquery清空、复位整个输入域
Apr 02 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
ajax请求data遇到的问题分析
Jan 18 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
教你一步步实现一个简易promise
Nov 02 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中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
axios学习教程全攻略
2017/03/26 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
linux面试题参考答案(5)
2014/09/01 面试题
会计实习生自我鉴定
2013/12/12 职场文书
小学生自我评价范文
2014/01/25 职场文书
大家访活动实施方案
2014/03/10 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
2015年财政所工作总结
2015/04/25 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
golang生成vcf通讯录格式文件详情
2022/03/25 Golang