手写Promise A+ 规范】的更多相关文章

基于ES6语法手写promise A+ 规范,源码实现 class Promise { constructor(excutorCallBack) { this.status = 'pending'; this.value = undefined; this.fulfilledAry = []; this.rejectedAry = []; //=>执行EXCUTOR(异常捕获) let resolveFn = result => { let timer = setTimeout(() =>…
Promise是什么 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理. Promise是处理异步编码的一个解决方案,在Promise出现以前,异步代码的编写都是通过回调函数来处理的,回调函数本身没有任何问题,只是当多次异步回调有逻辑关系时就会变得复杂: const fs = require('fs')…
写在前面: 在目前的前端分开中,我们对于异步方法的使用越来越频繁,那么如果处理异步方法的返回结果,如果优雅的进行异步处理对于一个合格的前端开发者而言就显得尤为重要,其中在面试中被问道最多的就是对Promise方法的掌握情况,本章将和大家一起分析和完成一个Promise方法,希望对你的学习有一定的帮助. 了解Promise 既然我们是要模仿ES6的Promise,那我们必然要知道这个方法主要都是用来干什么的,有哪些参数,有什么特性,为什么要使用Promise及如何使用等等. 为什么要使用它? 1.…
目录 概要 博客思路 API的特性与手写源码 构造函数 then catch Promise.resolved Promise.rejected Promise.all Promise.race 概要 本文主要介绍了Promise上定义的api的特性,以及手写如何实现这些特性.目的是把学习过程中的产出以博客的方式输出,巩固知识,也便于之后复习 博客思路 mdn上搜索Promise,了解类和api的定义: 定义了哪些属性,分别代表什么含义 api需要传什么参数,返回什么值,可能抛出什么异常 看官方…
1. Promise中then()方法返回来的结果或者规律 我们知道 promise 的 then 方法返回来的结果值[result]是由: 它指定的回调函数的结果决定的 2.比如说下面这一段代码 let p = new Promise((resolve, reject) => { resolve('ok'); }) const result= p.then(res => { alert(res) }, err => { console.log(err) }) 也就是说result的结果…
在上一章节中我们了解了 Promise 的一些易错点,在这一章节中,我们会通过手写一个符合 Promise/A+ 规范的 Promise 来深入理解它,并且手写 Promise 也是一道大厂常考题,在进入正题之前,推荐各位阅读一下 Promise/A+ 规范,这样才能更好地理解这个章节的代码. 实现一个简易版 Promise 在完成符合 Promise/A+ 规范的代码之前,我们可以先来实现一个简易版 Promise,因为在面试中,如果你能实现出一个简易版的 Promise 基本可以过关了. 那…
前端面试题之Promise问题 前言 在我们日常开发中会遇到很多异步的情况,比如涉及到 网络请求(ajax,axios等),定时器这些,对于这些异步操作我们如果需要拿到他们操作后的结果,就需要使用到回调函数.拿请求来说,如果我们需要拿到请求回来的数据我们就需要利用回调函数(见代码片段1),以下所有的请求都是使用jQuery的ajax模拟. 点击查看代码片段1 // 代码片段1 $.ajax({ url: 'url', type: 'post', data: { 参数1: 值1, 参数2: 值2…
异步编程是前端开发者必需的技能,过去管理异步的主要机制都是通过函数回调,然而会出现像“回调地狱”这样的问题.为了更好的管理回调,ES6 增加了一个新的特性 Promise.Promise 是 ES7 中async/await 语法的基础,是 JavaScript 中处理异步的标准形式,现实开发中基本离不开 Promise 了.我们接下来会根据 Promises/A+ 规范自己实现一个 Promise. 完整的代码可以点击我的 github 进行查看,如果你喜欢,欢迎 star,如果发现有问题或者…
我们工作中免不了运用promise用来解决异步回调问题.平时用的很多库或者插件都运用了promise 例如axios.fetch等等.但是你知道promise是咋写出来的呢? 别怕-这里有本promisesA+规范,便宜点10元卖给你了.   ERvaA3z.png 1.Promise 的声明 首先呢,promise肯定是一个类,我们就用class来声明. • 由于 new Promise((resolve, reject)=>{}) ,所以传入一个参数(函数),秘籍里叫他executor,传入…
话不多说,直接上代码 通过ES5的模块化封装,向外暴露一个属性 (function(window){ const PENDING = 'pending'; const RESOLVED = 'fulfilled' const REJECTED = 'rejected' function MyPromise(excutor){ const self = this;   //保存Promise对象,防止异步执行时,拿不到数据和方法,必要 self.value = undefined; self.st…