JavaScript|异步编程

1.异步的概念

**异步(Asynchronous, async)是与同步(Synchronous, sync)**相对的概念。在我们学习的传统单线程编程中,程序的运行是同步的(步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。异步就是从主线程发射一个子线程来完成任务。

2.回调函数

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

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

<p>等待4秒过后执行</p>
<p id="p2">太阳</p>
<p id="p3">月亮</p>
<script>// 回调函数
function sayHello(){
document.getElementById("p2").innerHTML = "Hello!Sun";
}
// 使用setTimeout()可以设置sayHello为一个4秒的过程,第一个参数是回调函数,第二个参数是毫秒数
setTimeout(sayHello,4000);</script>

</body>
</html>

JavaScript|异步编程_html

等待四秒过后:

JavaScript|异步编程_多线程_02

主线程并未停止,body中的内容正常运行,而当4秒回调过后,子函数运行结果就改变了h2的值。


人生没有白走的路,每一步都算数!