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 相关文章推荐
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
javascript 图片上传预览-兼容标准
Jun 01 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
JavaScript将XML转成JSON的方法
Mar 12 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
js中Object.defineProperty()方法的不详解
Jul 09 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
在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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP中extract()函数的妙用分析
2012/07/11 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
JS cookie中文乱码解决方法
2014/01/28 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
python的数学算法函数及公式用法
2020/11/18 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
毕业生个人求职的自我评价
2013/10/28 职场文书
酒店经理职责
2014/01/30 职场文书
幼儿教师国培感言
2014/02/19 职场文书
精神文明单位申报材料
2014/05/02 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
python使用torch随机初始化参数
2022/03/22 Python