`
huangyongxing310
  • 浏览: 498818 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

promise(js里很多服务的then实现分析)

 
阅读更多
promise(很多少服务的then)


1、promise有三种状态, 等待(pending)、已完成(fulfilled)、已拒绝(rejected)
2、promise的状态只能从“等待”转到“完成”或者“拒绝”,不能逆向转换,同时“完成”和“拒绝”也不能相互转换
3、promise必须有一个then方法,而且要返回一个promise,供then的链式调用,也就是可thenable的
4、then接受俩个回调(成功与拒绝),在相应的状态转变时触发,回调可返回promise,等待此promise被resolved后,继续触发then链


实现原理:
then方法把要回调的函数放入到promise中的函数数组中进行保存,并返回这个promise让后面继续调用then。
安装监控器到要监控的对象中,一旦被监控的对象发生状态变化,就调用promise里相应的函数进行处理,并
从promise中的函数数组取出函数进行一一运行。



参考原文:http://www.tuicool.com/articles/RzQRV3
分享到:
评论

相关推荐

    基于promise的进程池实现

    在JavaScript的世界里,异步编程是至关重要的,尤其是在处理耗时操作如文件读写、网络请求或...这样的实现既保留了Promise的易用性,又利用了多进程的并行计算能力,为大型的JavaScript应用提供了强大的异步处理能力。

    javascript-promise-book

    ### JavaScript Promise 迷你书知识点总结 #### 一、什么是Promise? **Promise** 是一种用于处理异步操作的编程模式,它可以将异步操作的结果封装为一个对象,并提供了统一的接口来处理成功或失败的情况。在...

    javascript-promise-book.pdf

    JavaScript中的Promise是一种处理异步编程的机制,它允许您将异步操作表示为一个最终可能成功或失败的结果。ECMAScript 6(ES6)对Promise提供了标准支持,让开发者可以更简洁地编写异步代码。 Promise有三种状态:...

    微信小程序(es6 promise封装)

    在微信小程序中,很多API如wx.request、wx.downloadFile等默认是异步的,并且采用的是传统的回调函数模式。这样的写法容易导致“回调地狱”,即嵌套过多的回调函数,使代码难以理解和维护。通过Promise封装这些API,...

    类似Promiseall但throttled

    在JavaScript的世界里,Promise.all()是一个非常常用的工具,它用于并发执行多个Promise,并在所有Promise都解析(resolved)后返回一个新的Promise。然而,在处理大量异步任务时,如果不加以控制,可能会导致性能...

    Promise.rar学习资料和笔记

    在JavaScript的世界里,Promise是处理异步操作的重要工具,它为了解决回调地狱问题而诞生。Promise这个名字在中文中可以翻译为“承诺”,它代表了一个将来可能完成或失败的异步操作的结果。在这个"Promise.rar学习...

    手写的Promise,需要的自行下载

    在实际应用中,Promise还有很多高级特性,如catch、finally、all、race等,它们都是基于核心的Promise机制来扩展的。为了完全实现这些功能,我们需要继续扩展我们的Promise构造函数和原型方法。 这个压缩包文件...

    js代码-解释Promise输出顺序

    在JavaScript的世界里,Promise是处理异步操作的重要工具,它为了解决回调地狱问题而诞生。Promise有三种状态:pending(等待中)、fulfilled(已成功)和rejected(已失败)。当Promise的状态从pending变为...

    js代码-实现Promise

    在JavaScript的世界里,Promise是异步编程的一种解决方案,它提供了更好的错误处理机制和更优雅的代码组织方式。...通过阅读和分析`main.js`中的实现,可以深入理解Promise的工作原理,进一步提升你的JavaScript水平。

    js代码-Promise实现

    `main.js` 文件很可能包含了Promise的实现示例。Promise的构造函数接受一个执行器函数(executor function),这个函数接收两个参数,分别是`resolve`和`reject`,它们是函数,用于改变Promise的状态。下面是一个...

    js代码-一个promise的实验例子

    `main.js` 文件很可能是本次实验的核心代码,其中可能包含了一个或多个Promise的实例。Promise的构造函数接收一个执行器函数,这个函数接收两个参数,即resolve和reject。执行器函数会在当前作用域之外执行,保证了...

    js代码-promise实现

    `main.js` 文件很可能包含了Promise的实现示例,它通常用于演示如何通过Promise处理复杂的异步流程。在JavaScript中,Promise的构造函数接收一个执行器函数,该函数接受两个参数,即resolve和reject,它们是两个函数...

    js代码-promise的基本使用

    在JavaScript的世界里,Promise是处理异步操作的重要工具,它为复杂的回调地狱提供了一种更加清晰、可读性更强的解决方案。Promise代表了一个将来可能完成或失败的异步操作的结果,它可以处于三种状态:pending...

    前端开源库-node-promise.zip

    "前端开源库-node-promise.zip"这个压缩包文件很可能包含了一个或多个与Promise相关的开源库,这些库可能用于在Node.js环境中增强Promise的功能,提供更高效的异步操作管理。 Promise 对象在 ES6 中被正式引入,它...

    JavaScript 用fetch 实现异步下载文件功能

    本文将详细解析如何使用JavaScript中的fetch API来实现文件的异步下载功能。首先,我们会介绍fetch API的基本用法,然后通过一个具体的实例代码来演示如何结合HTML和JavaScript来完成这一任务。 fetch API是现代...

    promise:一个简单的es6 promise的polyfill

    Promise链式调用是其核心特性之一,每个.then()方法返回一个新的Promise,允许我们按顺序执行多个异步操作,同时保持代码的可读性: ```javascript let promise = new Promise(...); promise .then(result => { /...

    回调地狱解决方案之Promise.docx

    - **链式调用**:Promise支持链式调用,可以在一个Promise实例上连续调用多个`.then()`方法,使得异步操作的逻辑更加清晰。 ```javascript promise .then((value) => { // 第一步处理 return value * 2; }) ....

    js代码-promise并发控制

    在JavaScript的世界里,Promise是处理异步操作的重要工具,它为复杂的回调地狱提供了一种更加优雅的解决方案。Promise并发控制是管理多个Promise执行时的一种策略,以防止过度消耗系统资源,确保程序性能和稳定性。...

    js代码-js promise相关

    在`main.js`文件中,很可能包含了使用Promise进行异步操作的示例代码,可以通过阅读和分析这段代码来深入理解Promise的运用。而`README.txt`可能提供了有关这个示例的说明或使用指南。通过实践和理解这些知识点,你...

Global site tag (gtag.js) - Google Analytics