Promise简单实现

 1 function Promise(fn)
 2 {
 3     this._resolvefun=null;
 4     this._rejectfun=null;
 5     this.status="pending";
 6     this.value="";
 7     this.reason="";
 8     var bind=function(ctx,fun){
 9       return function(){
10         fun.apply(ctx,arguments);
11       }
12     }
13     fn(bind(this,this.resolve), bind(this,this.reject));
14 }
15 Promise.prototype["resolve"]=function(value){
16         if(this.status!="pending") return;
17         this.status="fulfilled";
18         this.value=value;
19         this._resolvefun&&this._resolvefun(this.value);
20 }
21
22 Promise.prototype["reject"]=function(reason){
23         if(this.status!="pending") return;
24         this.status="rejected";
25         this.reason=reason;
26         this._rejectfun&&this._rejectfun(this.reason);
27 }
28
29 Promise.prototype["then"]=function(onFulfilled, onRejected){
30         if(this.status!="pending") return;
31         this._resolve=onFulfilled;
32         this._reject=onRejected;
33         return this;
34 }
35
36 new Promise(function(resolve, reject) {
37     console.log("b");
38  //setTimeout(resolve, 10, ‘done‘);
39  setTimeout(reject, 10, ‘done‘);
40  }).then((value) => {
41   console.log(value);
42 },(value) => {
43   console.log(value);
44 });
时间: 2024-10-01 03:16:53

Promise简单实现的相关文章

ES6 promise简单实现

基本功能实现: function Promise(fn){ //需要一个成功时的回调 var doneCallback; //一个实例的方法,用来注册异步事件 this.then = function(done){ doneCallback = done; } function resolve(){ doneCallback(); } fn(resolve); } 参考文章: 1.手把手教你实现一个完整的 Promise 2.教你一步一步实现一个Promise - 飞魚 3.剖析 Promise

promise简单实现分步操作

刚入前端不到一年,还记得去一家公司面试,当时还没有接触到ES6,更不要说在工作中运用了,对于promise也只是停留在瞄了一眼某文档.当时记得面试官是这样问的,js实现先干完事情1.然后事情2.最后事情3.当时想了一下就用es5事件地狱回调手写了一下这个问题, 123456789 function () { do something1 function step2() { dong something2 function step3 (){ do something3 } }} 当时嘴欠提了一下

Promise简单实现--摘抄

Promise 看了些promise的介绍,还是感觉不够深入,这个在解决异步问题上是一个很好的解决方案,所以详细看一下,顺便按照自己的思路实现一个简单的Promise. Promise/A+规范: 首先重新阅读了下A+的规范: promise代表了一个异步操作的最终结果,主要是通过then方法来注册成功以及失败的情况, Promise/A+历史上说是实现了Promise/A的行为并且考虑了一些不足之处,他并不关心如何创建,完成,拒绝Promise,只考虑提供一个可协作的then方法. 术语: p

es6 promise 简单总结

话不多说,直捣主题. promise用途:异步编程的一种解决方案. 优点:比传统的解决方案--回调函数和事件--更合理和更强大. 三种状态:pending(进行中).fulfilled(已成功)和rejected(已失败). 基本用法: const promise = new Promise(function(resolve, reject) { resolve(value);//表示异步操作成功 reject(error);//表示异步操作失败 }); promise常用的几个方法: prom

[javascript] Promise简单学习使用

原文地址:http://www.cnblogs.com/dojo-lzz/p/4340897.html 解决回调函数嵌套太深,并行逻辑必须串行执行,一个Promise代表一个异步操作的最终结果,跟Promise交互的主要方式是通过他的then()方法来注册回调函数,去接收Promise的最终结果值 Promise相关的协议有PromiseA和PromiseA+ 定义一个类Promise 定义属性队列queue,初始化空数组[] 定义属性值value,初始化null 定义属性状态status,初始

js中的Promise简单总结(ES6)

例如: 使用回调函数的写法: 使用Promise对象之后的写法: Promise的作用:把回调函数写法分离出来,在异步操作执行完后,用链式调用的方法执行回调函数,对于多层回调来说,非常的方便. 再看如下例子: 此时控制台会输出 'aa'  这个结果 此时控制台还是只有 'aa'  这个结果 此时控制台就会有  'aa'  和  'bb'   这两个结果. 也就是说把回到函数写在 then里面,进行链式调用,分离开来.代码看起来更加清晰. 未完,待总结. 原文地址:http://blog.51ct

JS Promise API

一.描述 我们知道JavaScript语言的执行环境是"单线程",所谓单线程,就是一次只能够执行一个任务,如果有多个任务的话就要排队,前面一个任务完成后才可以继续下一个任务. 这种"单线程"的好处就是实现起来比较简单,容易操作:坏处就是容易造成阻塞,因为队列中如果有一个任务耗时比较长,那么后面的任务都无法快速执行,或导致页面卡在某个状态上,给用户的体验很差. 一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深

AngularJS 中的 Promise 和 设计模式

Promises And Design Patterns 写得好长好长好长长~ 解决 Javascript 异步事件的传统方式是回调函数:调用一个方法,然后给它一个函数引用,当这个方法完结的时候执行这个函数引用. $.get('api/gizmo/42', function(gizmo) { console.log(gizmo); // or whatever }); 看起来很不错对不对,不过,也有缺点的:首先,合并或者链接多个异步过程超复杂:要么就是大量的模板代码,要么就是嗯哼你懂的回调地狱(

Javascript Promise 学习

Promise 就是处理异步的一个规范方法 a();b();alert("a");如果a() 里面有一个ajax 或者settimeout 那么alert("a") 会先跑这就是异步了.从前我们用一堆callBack函数来解决问题,但是这样写不好看.promise 的写法美丽多了依据上面的例子a().then(b).then(function(){alert("");})这样它会先跑完 a -> b - > alert("&