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定时变换图片实例代码
Mar 17 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
JS中Map和ForEach的区别
Feb 05 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 Javascript
小程序实现上下切换位置
Nov 16 Javascript
JavaScript实现弹出窗口效果
Dec 09 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获取MSN好友列表类的实现代码
2013/06/23 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
二级域名转向类
2006/11/09 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
JS实现轮播图效果
2020/01/11 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
python访问sqlserver示例
2014/02/10 Python
python快速查找算法应用实例
2014/09/26 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python实现学校管理系统
2018/01/11 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python中的取模运算方法
2018/11/10 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
Ajax的优点和缺点
2014/11/21 面试题
优质的学校老师推荐信
2013/10/28 职场文书
打架检讨书800字
2014/01/10 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书