当前位置: 首页 > news >正文

promise函数

一、promise的初衷:

          1、实现异步操作

          2、解决回调地狱

           promise是一个构造函数,自身有reject、resolve、race方法,原型链上有then、catch方法。用new出来一个promise对象会自带这些方法。

            1、它被设计成一个全局构造函数

            2 、这个函数创建出来的对象 是一个特殊的数据容器

            3、这个数据容器内部有三种状态: 等待 ==>产生的正确数据  产生了错误的数据

            4、创建对象时要求传一个函数参数==>也就是在这个函数中处理耗时业务,一般用法:

new Promise((resolve,reject)=>{resolve(),reject()}) 

二、promise函数中的then和catch方法

       初始状态:pendding  ---> 成功状态:fulfilled  调用resolve

       初始状态:pendding  ---> 失败状态:rejected   调用reject

promise对象.then(function(res){}):执行成功

              第一个then方法中的回调函数中的res代表成功或者失败(resolve、reject)函数的参数值

              promise对象.catch(function(err){}):执行失败

              then方法中的res参数是上个then方法的返回值

  let pro1 = new Promise(function(resolve, reject) {
            // resolve  成功
            // reject   失败
            if (1) {
                // resolve("成功啦!");
                resolve(2);
            } else {
                reject("失败啦!");
            }
        })

    pro1.then(res => {
            console.log(res);
            return "我是第一个then方法的返回值"
        })
        .then(res => {
            console.log(res);
            return "我是第二个then方法的返回值"
        })
        .then(res => {
            console.log(res);
        })
        .catch(err => {
            console.log(err);
        })
    console.log(3);

相关文章:

  • 何云伟全国相声巡回演,首场定在北京吉祥戏楼,不知道送不送鸡蛋
  • 秋招面试!阿里、字节、美团等大厂面试我只刷这份《Java面试题》没想到还真拿下了offer!
  • Day741.Redis消息队列 -Redis 核心技术与实战
  • C 语言的特性
  • python使用xlwings模块生成excel文件、并将数据写入生成的excel文件中、将数据写入指定表单的指定单元格中
  • 游戏客户端--个人学习路线总结、指北
  • 电场与磁场中的物理量
  • 【C++】基础入门(一):域、命名空间、C++输入输出
  • Hadoop生态及Hive、HBase、Impala、HDFS之间的关系
  • 3D-NAND向500层进发,天花板在哪里?
  • 【更新!】3dMax材质ID随机生成器插件MaterialIDsRandomGenerator v2.1.2使用教程
  • 音乐APP首页框架搭建
  • Java.lang.Class类 toString()方法有什么功能呢?
  • MySQL模糊查询你只知道LIKE就OUT了
  • 普通人想网络赚钱,那就做好最简单两件事
  • 「译」Node.js Streams 基础
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • avalon2.2的VM生成过程
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CentOS7 安装JDK
  • Electron入门介绍
  • extjs4学习之配置
  • HTML中设置input等文本框为不可操作
  • LintCode 31. partitionArray 数组划分
  • Mysql数据库的条件查询语句
  • PHP面试之三:MySQL数据库
  • spring boot 整合mybatis 无法输出sql的问题
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue 2.3、2.4 知识点小结
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • yii2中session跨域名的问题
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 技术发展面试
  • 解决iview多表头动态更改列元素发生的错误
  • 开源SQL-on-Hadoop系统一览
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 微信支付JSAPI,实测!终极方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 用Python写一份独特的元宵节祝福
  • 原生JS动态加载JS、CSS文件及代码脚本
  • AI算硅基生命吗,为什么?
  • 组复制官方翻译九、Group Replication Technical Details
  • #define
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (zhuan) 一些RL的文献(及笔记)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (一)RocketMQ初步认识
  • (转)可以带来幸福的一本书
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET 中让 Task 支持带超时的异步等待