首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS 手写: Promise

Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。 # 描述 一个 Promise 对象代表一个在这个 promise 被创建出来时不一定已知的值。...# Promise 的链式调用 我们可以用 promise.then(),promise.catch() 和 promise.finally() 这些方法将进一步的操作与一个变为已敲定状态的 promise...返回一个 promise,该 promise 在所有 promise 完成后完成。并带有一个对象数组,每个对象对应每个 promise 的结果。...失败,那么 Promise.all 返回的 promise 对象失败 在任何情况下,Promise.all 返回的 promise 的完成状态的结果都是一个数组 Promise.all = function...因为 Promise 规范规定除了 pending 状态,其他状态是不可以改变的,如果返回的是一个相同的实例的话,多个 then 调用就失去意义了。

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    61530

    怎么理解JS Promise

    四、Promise与异步 Promise是异步的。js异步操作是通过js的事件循环机制EventLoop实现的。...对于异步任务来说,当其可以被执行时,会被放到一个 任务队列(task queue) 里等待JS引擎去执行。...当执行栈中的所有同步任务完成后,JS引擎才会去任务队列里查看是否有任务存在,并将任务放到执行栈中去执行,执行完了又会去任务队列里查看是否有已经可以执行的任务。...总结起来js引擎对程序的执行顺序是:1。先执行同步任务的程序 2。 在执行异步任务里的微任务 3。所有微任务都执行完了后就执行异步的宏任务,但这里是一个一个宏任务去执行,不是一下子执行完。...after");//同步任务 } testFn(); 上图结果证明了上述所说的js的执行顺序 。

    11.7K30

    JS高阶(一)Promise

    Promise是什么?...抽象表达: Promise是ES6中新增的规范Promisejs中异步编程的新解决方案(旧方案采用函数回调); 具体表达: 从语法上说:Promise是一个构造函数; 从功能上说:Promise...promise 对象; 说明:返回一个成功/失败的 promise 对象; //创建promise.resolve对象 //如果传入的对象为 非promise对象 则返回的是一个 成功的promise...对象; 说明:只返回一个失败的 promise 对象; //创建promise.resolve对象 //如果传入的对象为 非promise对象 则返回的是一个 成功的promise对象 //如果传入的对象...非promise对象 则参数的结果决定了 resolve的结果 let p = Promise.reject(521); let c = Promise.reject(new Promise(

    2.4K10

    JS 异步系列 —— Promise 札记

    Promise; 要了解其它更为高级的异步操作得先熟悉 Promise; 基于这些目的,实践了一个符合 Promise/A+ 规范的 repromise。...本札记系列总共三篇文章,作为之前的文章 Node.js 异步异闻录 的拆分和矫正。...Promise札记 Generator札记 Async札记 Promise/A+ 核心 在实现一个符合 Promise/A+ 规范promise 之前,先了解下 Promise/A+ 核心,想更全面地了解可以阅读...Promise/A+规范 Promise 操作只会处在 3 种状态的一种:未完成态(pending)、完成态(resolved) 和失败态(rejected); Promise 的状态只会出现从未完成态向完成态或失败态转化...; Promise 的状态一旦转化,将不能被更改; repromise api 食用手册 Promise.resolve() Promise.resolve() 括号内有 4 种情况 /* 跟 Promise

    1.1K30

    js代码规范

    前言 在js的代码开发中,我简单的总结出了以下规则,后面会陆续补充并且对规范进行分类。...js代码建议保存到后缀名.js的文件中 js代码不建议放在html中,原因有:不能被缓存,会增大网页文件的大小,可维护性不高,会影响页面的加载。...js吧任何表达式都当一条简单语句,会导致一些隐性的错误。如果自己没加分号,那么js解释器会自动添加分号,按照自己能读懂的断句。 9.2 复合语句 也称为语句块,被包在大括号内部。...变量作用域 js没有有块级作用域,只有函数作用域。 [] {} 的用法 使用直接量发来声明对象和数组。...比如对象 var obj={} ;var arr=[] eval eval是最容易混乱使用的js函数,他可以执行内部入参的js函数或者表达式,可以直接解析变量。不建议使用 。

    8.8K30

    JSpromise是什么?

    Promise实列有三个状态: – pending (进行中) – resolved (成功) – rejected(失败) 当要处理某个任务的时候,promise的状态是pending,任务完成是状态就变成了...3.all() 接受一个数组作为自己的参数,数组中每一项都是一个promise对象,当数组的每一个promise状态时resolved时,all方法的状态才会变成resolved,有一个变成rejected...5finally() 他是不管promise时什么状态都会执行的都会去执行的,他不接受任何的参数。 Promise的优点: – 对象的状态不受外界的影响,只有异步的操作结果才能改变他的状态。...– 一旦状态改变就不会在变,任何时候都可以得到这个结果,就如他的名字一样promise(承诺)。 Promise的缺点: – 无法去取消promise,只要创建就会执行,无法中途去终止。...– 如果不设置回调函数去接受,promise内部会报错,不会映射到外部 – 处在pending(进行中)时 ,外部无法得知进展到那一步 总结: Promise最早是由社区提出的,在es6才被正式的纳入规范

    3.8K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券