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点击tr实现checkbox选中的方法
Mar 19 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
微信小程序  wx.request合法域名配置详解
Nov 23 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
JavaScript实现省市联动过程中bug的解决方法
Dec 04 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 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
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
js闭包学习心得总结
2018/04/17 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
开始着手第一个Django项目
2015/07/15 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
如何基于python测量代码运行时间
2019/12/25 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
教师教学评估方案
2014/05/09 职场文书
九一八事变演讲稿
2014/09/05 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
护士节慰问信
2015/02/15 职场文书
通知书大全
2015/04/27 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
python基础之爬虫入门
2021/05/10 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server