1 Star 0 Fork 0

Baboon-lagou / fed-e-task-01-01

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Part 1 · JavaScript 深度剖析

本阶段主要围绕 JavaScript 语言本身以及它的周边语言进行深度介绍。

让你从深度和广度两方面更深入掌握 JavaScript 这门语言以及相关编程范式。

夯实前端开发基础,从而应对大型复杂应用开发,同时也为后期的高阶内容打下坚实的基础。

fed-e-task-01-01

函数式编程与 JS 异步编程、手写 Promise

  • 函数式编程
  • JS 异步编程
  • 手写 Promise

大多数框架和应用为了彻底解决代码重用问题都选择拥抱 函数式编程 ,本模块将带你学习函数式编程的思想以及一些常见的函数式编程库的使用和原理;

JavaScript 异步编程课程将带你理解 JS 内部运行机制,以及如何更好的解决 Callback Hell;

最后还会带你手写实现一个自己的 Promise。

练习题

谈谈你是如何理解 JS 异步编程的,EventLoop、消息列队都是做什么的,什么是宏任务,什么是微任务?

  1. JS 异步编程就是 Javascript 语言提供的异步编程方案。其主要目的用于解决程序运行过程中的阻塞问题。在 Javascript 中主要提供了 4 种异步编程方式。

    • 回调函数(callback) Javascript中最基本的异步编程方式

    • 事件监听 事件驱动模式。任务的执行不取决于代码的顺序,而取决于某个事件是否发生

    • 发布/订阅 当一个任务完成后,向信号中心发布一个信号。其他任务可以订阅这个信号。从而知道自己何时执行

    • Promises 对象 Promises 对象是 CommonJS 工作组提出的一种规范,目的是为异步编程提供统一接口

  2. 消息队列(回调队列) Javascript中存放异步任务的容器(管道)遵循先进先出原则。当执行栈为空时,Javascript会从消息队列中提取任务到执行栈中继续执行。

  3. EventLoop(事件循环)Javascript 反复到消息列队中提取任务的一个过程。

  4. 宏任务 消息队列中的每个任务即可称为宏任务

  5. 微任务 当前执行栈中产生的新的异步任务(Promise 、MutationObserver、process.nextTick(node))它们将在本轮执行完毕后立即执行而不会进入消息队列重新排队

代码题 移步 code 目录

一 、 将下面异步代码使用 Promise 的方式改进

/code/questions/questions-01.js 点这

二、基于以下代码完成下面的四个练习

/code/questions/questions-02.js 点这

三、基于下面提供的代码,完成后续的四个练习

/code/questions/functor/app.js 点这

四、手写实现 MyPromise 源码

/code/questions/myPromise/myPromise.js 点这

MIT License Copyright (c) 2020 Baboon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

JavaScript 深度剖析之函数式编程,JS 异步编程相关内容 展开 收起
JavaScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/Baboon-lagou/fed-e-task-01-01.git
git@gitee.com:Baboon-lagou/fed-e-task-01-01.git
Baboon-lagou
fed-e-task-01-01
fed-e-task-01-01
master

搜索帮助