Toc
  1. 一、概念
  2. 二、异步的机制
  3. 三、异步函数
Toc
0 results found
bbcfive
JS的异步与同步

一、概念

同步(synchronous):指在js的主线程上,所有任务被依次执行;

异步(asynchronous):指任务不进入主线程,进入任务队列(task);当“任务队列”通知主线程,异步任务才进入主线程执行。

二、异步的机制

同步任务都在主线程上执行,形成一个“任务栈”;
异步任务在“任务队列”中放置一个事件;
主线程的“任务栈”执行完毕后,“任务队列”里的任务被唤醒,从而进入主线程执行;
主线程不断重复上面三步。
任务队列里的事件主要指IO设备或用户行为触发的事件。

三、异步函数

  • setTimeout
  • setInterval
  • Promise
    三个状态:Pending,Fulfilled,Rejected。
    核心方法:resolve/then/reject/catch/all/race
  • async await

四、promise和async/await的区别

Promise

1
2
3
4
5
6
7
8
const makeRequest = () =>
getJSON()
.then(data => {
console.log(data)
return "done"
})

makeRequest()

Async/Await

1
2
3
4
5
6
const makeRequest = async () => {
console.log(await getJSON())
return "done"
}

makeRequest()

综上,Async更简洁。

本文作者:bbcfive
版权声明:本文首发于bbcfive的博客,转载请注明出处!