javascript 自己主动绑定JS callback 的方法函数

简介:

自己写的一个javascript 智能绑定callback 而且调用运行的函数。主要用于异步请求的 ajax中:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<script>
    /**
     * @author default7@zbphp.com
     * @date 2014-10-17
     * @description 通过传入的參数获取出函数名称
     * @param args
     * @returns {string}
     */
    function getFunctionName(args) {
        var fName = '';
        if (typeof  args == 'string' && /^[a-zA-Z0-9]+$/.test(args)) {
            fName = args;
        } else {
            var fBody = '';
            if (typeof args == 'object' && args.callee) {
                fBody = args.callee.toString();
            } else if (typeof  args == 'string') {
                fBody = args;
            }

            if (fBody) {
                var m = fBody.match(/function\s+([a-zA-Z0-9]+)\s*\(/i);
                if (m && m[1]) {
                    fName = m[1];
                }
            }
        }
        return fName;
    }

    var gCallback = [];
    function addCallback(fName, callback) {
        if (typeof fName == 'string' && typeof window[fName] == 'function' && typeof callback == 'function') {
            if (typeof gCallback[fName] == 'undefined') {
                gCallback[fName] = [];
            }
            gCallback[fName].push(callback);
        }
    }

    /**
     * @description 运行绑定的函数
     * @param args
     */
    function execCallback(args) {
        var fName = getFunctionName(args);
        if (fName && window[fName] && gCallback[fName]) {
            for (var i in gCallback[fName]) {
                gCallback[fName][i]();
            }
            gCallback[fName] = [];//仅仅调用一次
        }
    }
</script>


<script>
    function a() {
        alert('a');
    }

    function b() {
        alert('b');
    }

    function c() {
        alert('c');
    }
    function d() {
        alert('d');
    }


    function initUser() {
        execCallback(arguments);

    }

    addCallback('initUser', a);
    addCallback('initUser', b);
    addCallback('initUser', c);

    initUser();
    addCallback('initUser', d);
    initUser();

</script>
</body>
</html>







本文转自mfrbuaa博客园博客,原文链接http://www.cnblogs.com/mfrbuaa/p/5139132.html,如需转载请自行联系原作者

相关文章
|
8月前
|
JavaScript 前端开发 开发者
JavaScript中的箭头函数:简洁的语法与this绑定
JavaScript中的箭头函数:简洁的语法与this绑定
518 184
|
10月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
1195 0
|
8月前
|
前端开发 JavaScript
JavaScript中的箭头函数:简洁与this绑定
JavaScript中的箭头函数:简洁与this绑定
|
10月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
1230 80
|
10月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
390 19
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
JavaScript 前端开发 Java
js 垃圾回收机制的方法
JS回收机制方法讲解
|
前端开发 JavaScript iOS开发
javascript callback函数的理解与使用
最近做的一个项目中用到了callback函数,于是就研究了下总结下我对javascript callback的理解 首先从callback的字面翻译“回调” 可以理解这是一个函数被调用的机制 当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的下面是维基百科对回调的定义: a callba...
825 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
400 2

热门文章

最新文章

下一篇
开通oss服务