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 相关文章推荐
实现复选框全选/全不选切换
Dec 23 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
js改变img标签的src属性在IE下没反应的解决方法
Jul 23 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
jQuery性能优化技巧分析
Feb 20 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
Jan 17 Javascript
echarts实现晶体球面投影的实例教程
Oct 10 Javascript
vue mvvm数据响应实现
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
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
php设置编码格式的方法
2013/03/05 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
PHP中soap的用法实例
2014/10/24 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
Javascript验证方法大全
2015/09/21 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
js实现星星海特效的示例
2020/09/28 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Django实现表单验证
2018/09/08 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python 使用shutil复制图片的例子
2019/12/13 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
英国健身超市:Fitness Superstore
2019/06/17 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
党员学习十八大感想
2014/01/17 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
Golang的继承模拟实例
2021/06/30 Golang