zoukankan      html  css  js  c++  java
  • Js学习之-----Promise

    1、为什么需要异步?

    JS是单线程语言

    JS和DOM渲染共同使用一个线程,因为JS可以修改DOM结构,如果不是同线程,那DOM渲染会混乱~(不知道听谁的,或者顺序不对)

    JS执行过程中,DOM渲染必须停止;反之亦然

    然而,很多场景下,如果一直等待会浪费资源,用户体验也很不好

    所以--------需要异步

    异步的使用场景

    网络请求:如,Ajax图片加载

    定时任务:如,setTimeout       等等

    一般用回调函数的形式实现异步!

    2、promise的出现

    回调地狱:在回调函数中嵌套回调函数-------------代码难以维护

    promise解决了这个问题!!

    一个常见需求:通过Ajax请求id---->>再根据id请求用户名---->>再根据用户名获取Email

    3、Promise具体是什么

    Promise是一个构造函数,通过new关键字实例化对象

    4、Promise实例有两个属性

    (1)state

      pending(准备中),fulfilled(已完成),rejected(已拒绝)

    注:状态只能有一种,不能共存

    (2)result

    5、Promise构造函数原型上的then方法

    (1)then方法参数

    在then方法的参数函数中,通过形参来传递Promise对象的不同结果:

    (2)then方法返回值

    打印then方法的返回值:

     》》是一个Promise对象!!!

    所以,是不是可以这样:

    链式操作让代码变得扁平化~

    注:promise的状态不改变,then里面的方法是不会执行的!!!

    在then方法中,通过return将返回的promise状态改为 fulfilled 状态

    如果then方法中代码出错,则会将返回的promise状态改为 rejected 状态

     

    6、Promise构造函数原型上的catch方法

     

    或代码出错也会执行~

    7、Promise解决回调地狱

    还是上面的例子:

    通过Ajax请求id---->>再根据id请求用户名---->>再根据用户名获取Email

  • 相关阅读:
    Kubernetes web界面kubernetes-dashboard安装【h】
    K8s+dashboard安装部署【h】
    kubernetes/dashboard Getting Started
    kubernetes/dashboard Creating sample user
    kubernetes安装dashboard步骤 【h】
    Kubernetes Dashboard的安装与坑【h】
    Kubernetes-kubectl The connection to the server localhost:8080 was refused -did you specify
    部署kubernetes1.8.3高可用集群
    linux磁盘读写性能优化
    alias实现命令别名
  • 原文地址:https://www.cnblogs.com/zhaoyingzhen/p/14746321.html
Copyright © 2011-2022 走看看