美文网首页
手写Promise

手写Promise

作者: 小路_7bb8 | 来源:发表于2020-06-24 20:03 被阅读0次

原文地址: https://segmentfault.com/a/1190000018260324

(function(){
const PENDING = 'pending';
const RESOLVED = 'fullfilled';
const REJECTED = 'rejected';
function MyPromise(fn) {
const that = this
that.state = PENDING
that.value = null
that.resolvedCallbacks = [];
that.rejectedCallbacks = [];
try {
fn(resolve, reject)
} catch (e) {
reject(e)
}
function resolve(value) {
if (that.state === PENDING) {
that.state = RESOLVED
that.value = value // 返回的值
that.resolvedCallbacks.map(cb => cb(that.value))
}
}

function reject(value) {
if (that.state === PENDING) {
that.state = REJECTED
that.value = value
that.rejectedCallbacks.map(cb => cb(that.value))
}
}
}
MyPromise.prototype.then = function(onFulfilled) {
const that = this
onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : v => v
if (that.state === PENDING) {
that.resolvedCallbacks.push(onFulfilled)
}
}
MyPromise.prototype.catch = function(onRejected) {
const that = this
onRejected = typeof onRejected === 'function'? onRejected: r => { throw r;}
if (that.state === PENDING) {
that.rejectedCallbacks.push(onRejected)
}
}
window.MyPromise = MyPromise;
})();
var p1 = new MyPromise((resolve,reject) => {
setTimeout(() => {
resolve(10); // 或resolve
},1000);
});
console.log(p1);
p1.then((data)=>{
console.log(my final data is: ${data});
});

相关文章

  • 手写Promise

    手写 Promise 我们会通过手写一个符合 Promise/A+ 规范的 Promise 来深入理解它,并且手写...

  • 手写 Promise 系列 --- 3

    在前两篇(手写 Promise 系列 --- 1)和(手写 Promise 系列 ---2) 中,达成了3个目标 ...

  • 手写Promise

    $ 正常的promise用法   $ 手写的Promise   # 测试可行性

  • 手写promise

    手写promise 带大家手写一个 promis。在手写之前我会先简单介绍一下为什么要使用promise、prom...

  • 纯手写实现自己的nodejs promise 库

    纯手写实现自己的nodejs promise 库什么是Promise?promise 链Async/Await后续...

  • 手写基础 promise

    1. 前言 玩下吧 手写 promise,看看能写成啥样 2. promise 基础结构 3. 手写`promi...

  • 手写 Promise

    一、Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 Promise 介绍和使用详见: 认识并使...

  • 手写Promise

  • 手写Promise

    Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 这篇博客有关于P...

  • 手写promise

    本章节纯粹是对promise手写实现。如果不了解promise自行了解再来学习本章知识。promise初体验首先,...

网友评论

      本文标题:手写Promise

      本文链接:https://www.haomeiwen.com/subject/uwjdfktx.html