首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

解读Promise原理,手动实现一个Promise

简单看看 Promise 的历史 1.Promise 在 1980 年代被创建出来 2.在 1988 年正式得名: Promise 3.已经有很多人了解到了 Promise, 但是人们还是坚持使用 node.js...,并且和已有的实现Promise/A 规范的 library 相兼容 实现 Promise 之前, 让我们看看 Promise 有哪些规范 Promise一个 thenable 对象, 也就是说...rejected 状态, 不可再改变其状态 一旦 promise 改变了其状态, 它笔芯有一个值(这个值也可能是 undefined) 开始实现一个 Promise 首先, 让我们看看一段最普通的异步代码...: 支持链式调用 为了支持链式调用,.then() 方法的返回值必须是 thenable (根据 Promise/A+ 规范, .then() 方法的返回值需要是一个新的 Promise) 为此我们加入一个工具方法...的一个简单的实现实现思路主要参考了 Q-A promise library for javascript。

60330

JS实现一个模板引擎

下面是一个具体的使用例子。 安装 npm install ejs 使用示例 在koa中使用ejs模板引擎。...index.js const Koa = require('koa') const views = require('koa-views') const path = require('path') const...手写简单的模板引擎 那这些模板引擎具体是怎么实现的呢? 下面我们来手写一个简单的类ejs模板引擎。 需求分析 实现模板引擎先要定义模板的语法,这里我们就重新不定义了,直接使用ejs的语法。...在里面的字符,保留为js逻辑 在里面的字符,保留js逻辑,且其值输出为html代码。 对这些处理方式,着手实现。 正则/<%=(.+?)...其他不是插值的字符,直接\n echo( $1 ); \n,由于正则取反比较复杂,这里巧妙转换一下写法,改为在开头和每个类型二三的结尾加一个 "echo(`",结尾加一个结束符号,也能达到统一的结果。

1.6K20

手写一个符合Promise A+规范的Promise实现

前言 记得之前发过一篇关于Promise文章的讲解,不过都不是很深入,只是对使用上的理解,所以这次我将会带着各位通过JavaScript来实现一个Promise,并且是符合规范的,最后可以通过promises-aplus-tests...整个实现主要通过Promise A+规范来做的,可以参考以下地址: https://promisesaplus.com/ 正文 接下来的内容我将直接贴出源码,因为我在写的时候都以逐行加了注释来说明代码理解...#') ) } // 如果x是对象或者是一个函数的时候 那么它可能是一个promise,接下来将进一步解析。...FULFILLED, REJECTED, isArray, isObject, isFunction, onFulfilledOrOnRejectedHandler } 主文件 promise.js...结语 以上就是全部的代码了,代码不是很多,Promise A+规范主要在于then方法,其它辅助方法都比较容易实现

58630

实现一个Promise说起

Promise实现,写到这里我们试着从代码中了解下Promise究竟干了些什么。...我们知道JS是异步非阻塞单线程的语言,遇到异步任务时,将会向事件队列添加一个函数,直到异步任务完成时,线程再执行这个函数,基于此,在JS中很多地方用到了订阅者模式。...Promise正好是一个订阅者模式的实现executor就是我们添加的订阅的数据源,我们向这个源注册了两个钩子resolve, reject,分别在异步事件的成功和失败时执行,相当于订阅者的notify...用起来真是爽 这篇文章只是简单的介绍了Promise背后执行的原理,还有Promise.all Promise.race方法没有实现,不过已经不重要了,我们只需要记得Promise一个发布订阅模式就OK...实现上需要写一个generator runtime这也超过大部分人的能力。因此能够用好async await就好了。

41230

js实现一个div弹出图层

js实现一个弹出图层,具体效果: 点击按钮后弹出图层,图层处于页面中间、带有阴影的圆角边框、图层中有input、提交按钮、关闭按钮、标题,弹出后背景页面不可点击、背景变灰。...所有代码不分开、放在一个html中显示。 以下是一个简单的JavaScript代码示例: <!...overlay.style.display = "none"; document.body.style.overflow = "auto"; } 该代码使用了CSS样式,包含一个按钮和一个弹出图层...关闭按钮也是通过JavaScript函数来实现的,当用户单击关闭按钮时,它将隐藏弹出框并将背景页面状态还原。...如果想隐藏JS功能逻辑,可用JShaman对JS代码进行混淆加密,加密后的代码是密文状态,不可读、不可分析。

7.1K50

20行实现一个Promise

前言 在面试的时候,经常会有面试官让你实现一个Promise,如果参照A+规范来实现的话,可能面到天黑都结束不了。...说到Promise,我们首先想到的最核心的功能就是异步链式调用,本篇文章就带你20行代码实现一个可以异步链式调用的Promise。...promise1, 在then的实现中,我们构造了一个新的promise返回,叫它promise2 在用户调用then方法的时候,用户手动构造了一个promise用来做异步的操作,叫它user promise...那么在then的实现中,self其实就指向promise1 而promise2的excutor中,立刻执行了一个函数,它往promise1的onResolvedCallback数组中push了一个函数...文章总结 以上代码全部整理在了 https://github.com/sl1673495/frontend-code-fragment/blob/master/promise-easy.js 本文只是简单实现一个可以异步链式调用的

13020

实现一个Promise说起

Promise实现,写到这里我们试着从代码中了解下Promise究竟干了些什么。...我们知道JS是异步非阻塞单线程的语言,遇到异步任务时,将会向事件队列添加一个函数,直到异步任务完成时,线程再执行这个函数,基于此,在JS中很多地方用到了订阅者模式。...Promise正好是一个订阅者模式的实现executor就是我们添加的订阅的数据源,我们向这个源注册了两个钩子resolve, reject,分别在异步事件的成功和失败时执行,相当于订阅者的notify...用起来真是爽 这篇文章只是简单的介绍了Promise背后执行的原理,还有Promise.all Promise.race方法没有实现,不过已经不重要了,我们只需要记得Promise一个发布订阅模式就OK...实现上需要写一个generator runtime这也超过大部分人的能力。因此能够用好async await就好了。

67240
领券