首页 > 编程语言 >JavaScript之异步编程

JavaScript之异步编程

时间:2023-02-01 16:23:48浏览次数:51  
标签:异步 编程 函数 JavaScript javascript print 等待

什么是异步

异步:Asynchronous,async是与同步synchronous,sync相对的概念。

传统单线程编程中,程序的运行是同步的,指程序运行在一个控制流之中运行。而异步的概念就是不保证同步的,就是说一个异步过程的执行将不和原有的序列有什么关系。

简单来说就是:同步是按照你写的代码顺序去执行,异步则是不会按照代码顺序执行,从而异步的效率是更高的。

 

什么时候使用异步编程?

1)在可能发生等待的情况
2)等待过程中不能像alert一样阻塞程序的时候
3)因此,所有的“等待的情况”都需要异步
一句话总结就是需要等待但是又不能阻塞程序的时候需要使用异步

 

回调函数

回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。

 例如:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>javascript 异步编程</title>
 6     </head>
 7     <body>
 8         <p>回调函数等待三秒后执行</p>
 9         <p id="demo"></p>
10         <script>
11             function print(){
12                 document.getElementById("demo").innerHTML="javascript 异步编程"
13             }
14             setTimeout(print, 3000)
15         </script>
16     </body>
17 </html>

上述代码中的setTimeout就是一个消耗时间较长的过程,她的第一个参数叫做回调函数,第二个参数是毫秒数,这个函数执行之后会产生子线程,子线程会等待3s,然后执行回调print函数。

当然也可以写成:

1             setTimeout(function (){
2                 document.getElementById("demo").innerHTML="javascript 异步编程"
3             }, 3000)

异步Ajax

 

标签:异步,编程,函数,JavaScript,javascript,print,等待
From: https://www.cnblogs.com/wenzm/p/17083211.html

相关文章

  • Java并发编程——ReentrantReadWriteLock原理
    一、读写锁有这样一种场景:1、如果对一个共享资源的写操作没有读操作那么频繁,这个时候可以允许多个线程同时读取共享资源;2、但是如果有一个线程想去写这些共享资源,那么其......
  • Java并发编程——StampedLock
    一、StampedLock类简介StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细......
  • Java并发编程——CountDownLatch
    一、闭锁CountDownLatch一个同步工具类,允许一个或者多个线程一直等待,直到其他线程的操作都执行完成之后再继续往下执行。 使用场景:在一些应用场合中,需要等待某个条件达......
  • Java并发编程——CyclicBarrier
    一、CyclicBarrier循环栅栏CyclicBarrier是java.util.concurrent包下面的一个工具类,字面意思是可循环使用(Cyclic)的屏障(Barrier),通过它可以实现让一组线程到达一个屏障(也可......
  • Java并发编程——Semaphore
    一、SemaphoreSemaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。S......
  • Java并发编程——并发包中锁的AQS通用实现
    一、包结构介绍我们查看下java.util.concurrent.locks包下面,发现主要包含如下类:可以发现ReentrantLock和ReentrantReadWriteLock都是AbstractQueueSynchronizer类。我们......
  • Java并发编程——ArrayBlockingQueue
    一、阻塞队列BlockingQueue在java.util.concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速......
  • Java并发编程——LinkedBlockingQueue
    一、阻塞队列BlockingQueue在java.util.concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速......
  • 使用@Async实现异步调用
    什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行......
  • Spring开启@Async异步方法(javaconfig配置)
    在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。应用场景:某些耗时较长的......