回调callback的C#及JS同步、异步实现

代码很简单,不多做解释,如果有疑问和建议请留言,回第一时间回复

C#代码first

    class Program {
        static void Main(string[] args) {
            MyCallback mc = new MyCallback();
            mc.Callback(new Action(success), new Action(failed));
            mc.Callback(new Action(() => {
                Console.WriteLine("无参匿名success");
            }), new Action(() => {
                Console.WriteLine("无参匿名failed");
            }));
            mc.Callback(new Action<object>(success), new Action<object>(failed));
            Console.ReadKey();//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
        }

        static void success() {
            Console.WriteLine("无参success");
        }
        static void failed() {
            Console.WriteLine("无参failed");
        }

        static void success(object str) {
            Console.WriteLine((string)str);
        }
        static void failed(object str) {
            Console.WriteLine((int)str);
        }
    }

    class MyCallback {
        public void Callback(Action success, Action failed) {
            success();
            failed();//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
        }

        public void Callback(Action<object> success, Action<object> failed) 
        {
            success("123");
            failed(456);
        }
    }

JS代码

    <script type="text/javascript">
        var mc = new MyCallback();
        mc.Callback(success, failed);
        console.log(222);
        function success(str) {
            console.log(str);
        }
        function failed(num) {
            console.log(num);
        }

        mc.Callback(function (str) {
            console.log(str);
        }, function (num) {
            console.log(num);//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
        })
        console.log(333);
        function MyCallback() {
            this.Callback = function (success, failed) {//无参,有参 自己选择传不传参
                successDelegate = success;//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
                failedDelegate = failed;
                setTimeout('successDelegate("111")', 1000); //异步
                setTimeout('failedDelegate("444")', 4000);//异步
                //                success("123");//同步
                //                failed(456);//同步
            }
        }              
    </script>    

 

 

转载于:https://www.cnblogs.com/ahjesus/archive/2013/04/28/3050021.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值