回调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>    

时间: 2024-08-24 18:27:56

回调callback的C#及JS同步、异步实现的相关文章

js同步-异步-回调

出处:https://blog.csdn.net/u010297791/article/details/71158212(1)上面主要讲了同步和回调执行顺序的问题,接着我就举一个包含同步.异步.回调的例子. let a = new Promise(//声明了一个Promise回调函数,能够使用then function(resolve, reject) { console.log(1) setTimeout(() => console.log(2), 0) console.log(3) cons

【Javascript】Js同步异步以及回调函数

一.前言 今天查看了requireJs方面的知识,看着看着就看到了JS中同步与异步操作的知识点,经过查阅了很多的资料,基本了解了JS的同步与异步的操作,其中涉及到的知识点如下: 什么时同步和异步? JS的是基于事件驱动的单线程语言,为啥会有异步操作这种多线程的操作??? 浏览器线程,浏览器内核线程间的合作? JS的异步操作都有哪些?它是如何工作的? 二.js单线程 JS的单线程 单线程的含义是js只能在一个线程上运行,也就是说,同一时间只能做一件事情,其他的任务则会放在任务队列里面排队等等js线

js同步异步执行顺序setTimeOut面试题分析

<script> for(var i=0;i<2;i++){ setTimeout(function(){ console.log(i); },0); } </script> // 结果:2,2 打印两个2而不是0,1,跟js执行顺序有关系. 所有的任务分为两种,一种是同步任务,一种是异步任务.同步任务是指在主线程上排队的任务.异步任务是指不进入主线程.而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异

Js同步异步机制

JavaScript引擎是单线程的,强制所有的异步事件排队等待执行 setTimeout 和 setInterval 在执行异步代码的时候有着根本的不同 如果一个计时器被阻塞而不能立即执行,它将延迟执行直到下一次可能执行的时间点才被执行(比期望的时间间隔要长些) 如果setInterval回调函数的执行时间将足够长(比指定的时间间隔长),它们将连续执行并且彼此之间没有时间间隔 animate因为内部利用的实际是setInterval $(function(){ for(var i=0;i<10;

深入理解并发/并行,阻塞/非阻塞,同步/异步

首先,阻塞这个词来自操作系统的线程/进程的状态模型中,如下图 : 一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止.各个状态的转换条件如上图,其中有个阻塞状态,就是说当线程中调用某个函数,需要IO请求,或者暂时得不到竞争资源的,操作系统会把该线程阻塞起来,避免浪费CPU资源,等到得到了资源,再变成就绪状态,等待CPU调度运行. 阻塞调用是指调用结果返回之前,调用者会进入阻塞状态等待.只有在得到结果之后才会返回. 非阻塞调用是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回

IO中同步异步,阻塞与非阻塞

一.同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等). 但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务. 最常见的例子就是 SendMessage. 该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回. 当对方处理完毕以后,该函数才把消息处理函数所返回的值返回给调

回调--闭包--同步--异步--阻塞--非阻塞

回调-- 一个方法的指针传递给事件源, 事件源在事件发生之后, 反过来调用这个方法. 这个方法就叫回调函数 在java中, 一般通过抽象类或接口定义回调函数, 如: interface CallBackI { void callback(Object obj) ; } class A implements CallBackI { private Object obj ; public void callback(Object obj) { this.obj = obj ; } public vo

js同步和异步

异步并不是同步,异步是单线程,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行. 并发是多线程, 同步:一定要等任务执行完了,得到结果,才执行下一个任务. 异步:不等任务执行完,直接执行下一个任务. 简而言之,言而总之:同步就是我强依赖你(对方),我必须等到你的回复,才能做出下一步响应.即我的操作(行程)是顺序执行的,中间少了哪一步都不可以,或者说中间哪一步出错都不可以,类似于编程中程序被解释器顺序执行一样:同时如果我没有收到你的回复,我就一

js的线程和同步异步以及console.log机制

项目上线了,闲下来就写写东西吧.积累了好多东西都没有做笔记~挑几个印象深刻的记录一下吧. js的同步异步以及单线程问题: 都知道单线程是js的一大特性.但是通常io(ajax获取服务器数据).用户/浏览器自执行事件(onclick.onload.onkeyup等等)以及定时器(setTimeout.setInterval)这些异步操作又是怎样工作的呢. 我们把js的任务分为两种:同步任务,异步任务: 举个例子吧:   let a=1; console.log("同步任务"): setT