# fed-e-task-01-01 **Repository Path**: ms_H/fed-e-task-01-01 ## Basic Information - **Project Name**: fed-e-task-01-01 - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-16 - **Last Updated**: 2021-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 模块一:函数式编程与JS异步编程、手写Promise(简答题) ## 一、谈谈你是如何理解JS异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务 1. JS异步编程:`js语言是一种运行在浏览器端的脚本语言,本身就是一个GUI(图形操作系统), 所以导致必须采用单线程的模式进行处理,图形操作系统有个缺点就是需要上一步的操作完成之后才能进行下一步操作, 遇到比较耗时的任务就会形成堵塞,而异步编程就是解决单线程的一种方案,将任务的执行模式分成 异步模式和同步模式`。 2. EventLoop:`计算机的一种运行机制,一种执行模式,用来通知消息队列中的任务进入调用栈` 3. 宏任务:`macrotask也叫tasks,一些异步任务会进入macro task queue(宏任务队列), 只有微任务队列运行完才会被放入调用栈(堆栈),一般常见的包括 script、setTimeout、setInterval` 4. 微任务:`microtask也叫jobs,另一些异步任务会进入micro task queue(微任务队列), 一般在同步任务执行完成之后先于宏任务进入调用栈(堆栈),一般常见的包括也叫promise、 mutationObserver(dom监听的函数),node(process.nextTick)`