手写Proimise


手写Promise中级版

搭建基本结构

lib/Promise.js

/**
 * 
 * 自定义Promise函数模块
 */

(function (window){
    
    function Promise(executor){

    }
    /**
     * Promise原型对象的then()
     * 指定成功和失败的回调函数
     * 返回一个新的Promise对象
     */
    Promise.prototype.then = function(onResolved,onRejected){

    }
    /**
     * Promise原型对象的catch()
     * 指定失败的回调函数
     * 返回一个新的Promise对象
     */
    Promise.prototype.catch = function(onRejected){

    }
    /**
     * Promise函数对象的resolve方法
     * 返回一个成功的Promise
     * 
     */
    Promise.resolve = function(value){

    }
    /**
     * Promise函数的reject方法
     * 返回一个指定reason的失败的promise
     */
    Promise.reject = function(reason){

    }
    /**
     * Promsie函数对象all方法
     * 返回一个promise,只有当所有promise都成功时才成功,否则只要有一个失败就失败
     */
    Promise.all = function(promises){

    }
    /**
     * Promise函数对象的race方法
     * 返回一个promise,其结果有第一个完成的promise决定
     */
    Promise.race = function(promises){
        
    }

    //向外暴露Promsie函数
    window.Promise = Promise
})(window)

在index.html引入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./lib/Promise.js"></script>
    <script>
        new Promise((resolve,reject)=>{

        })
    </script>
</body>
</html>

实现Promise构造函数

定义resolve与reject

(function (window){
    
    function Promise(executor){
        //定义resolve与reject函数
        function resolve(value){

        }
        function reject(reason){
            
        }
        //立即同步执行 执行器
        executor(resolve,reject)

    }
    ...

Promise构造函数接收一个执行,我们要在内部同步执行执行器

 <script>
        new Promise((resolve,reject)=>{
            resolve(1)
        })
</script>
...
  //立即同步执行 执行器
executor(resolve,reject)
...

文章作者: 夏梦
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 夏梦 !
 上一篇
数据结构 数据结构
数据结构线性结构数据元素之间存在一对一的线性关系。 线性结构有两种不同的存储方式 线性结构常见的有:数组(稀疏数组、)、队列(单向队列,环形队列)、链表(单链表、环形链表、双链表)、栈 顺序存储方式顺序存储的线性表称为顺序表,顺序表中存储的
2021-04-09
下一篇 
koa2快速入门 koa2快速入门
前言本课程只适合学过 nodeJs 的同学。 一、Koa2安装创建一个空白目录,然后进入终端,并在终端对koa进行安装: # 项目初始化 npm init -y # 安装koa2 npm i koa2 -S 二、入口文件在项目根目录创建
2021-04-09 夏梦
  目录