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读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
May 26 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
11种ASP连接数据库的方法
Sep 18 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 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之第七天
2006/10/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php写的AES加密解密类分享
2014/06/20 PHP
php单例模式的简单实现方法
2016/06/10 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
Python与Java间Socket通信实例代码
2017/03/06 Python
Python 备份程序代码实现
2017/03/06 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python获取Pandas列名的几种方法
2019/08/07 Python
python 安装移动复制第三方库操作
2020/07/13 Python
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
联强国际笔试题面试题
2013/07/10 面试题
考试作弊被抓检讨书
2014/01/10 职场文书
新学期教师寄语
2014/04/02 职场文书
学生鉴定评语大全
2014/05/05 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
小学学校评估方案
2014/06/08 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
技术支持岗位职责
2015/02/13 职场文书
高中同学会致辞
2015/08/01 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python