zoukankan      html  css  js  c++  java
  • Promise理解

    一.promise基本概念

    promise是:

    • 异步编程的解决方案,作用是把异步操作用同步操作的方式表达出来,避免了层层嵌套回调
    • 构造函数
    • 构造函数的参数是一个函数,该参数函数内部也有2个参数
    • 这两个参数是resolved函数和reject函数
    • resolved函数是在异步操作执行成功后调用,作用是把操作结果传递出去(通常是传递给then的第一个函数)
    • reject函数是失败时的回调,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。(通常是传递给catch的函数)
    • then常用来执行成功
    • catch异步发生错误时执行的函数

    是不是到这一步就懵了,道理都懂,可是怎么用?别着急,这里举几个例子

    resolved+then

    new Promise((reslove,reject)=>{
              reslove(11)
          }).then((value)=>{
            console.log(value);//11
          })

    reject+catch

    //根本没有posts.json这个文件,getJSON这句话会导致错误,此时会执行catch,最终的运行结果是打印err
    new Promise((reslove,reject)=>{getJSON('/posts.json')})
          .then((value)=>{console.log(value);})
          .catch((err)=>{console.log('err');})

    二.promise常用方法

    这里介绍2个常用的,all和race

    promise.all([a,b,c])简单来说就是,all内所有的参数都执行成功了才算promise执行完,才会执行.then方法;如果有一个或多个参数执行失败,会把第一个失败参数执行返回值返回给catch方法;

    很对人对all的理解就是全部执行完才会执行then,也可以,因为通常我们使用场景就是这样

    promise.race([a,b,c])只要race内的一个参数执行了,就算promise执行完,会去执行then

     

  • 相关阅读:
    洛谷提高组比赛day2
    清北合肥day2-day5
    高精度开根
    清北合肥day1
    愤怒的小鸟
    蓝书图论题
    替罪羊树&&非旋treap
    【bzoj4811】[Ynoi2017]由乃的OJ 树链剖分+线段树区间合并
    【bzoj3866】The Romantic Hero dp
    【bzoj3747】[POI2015]Kinoman
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/12589172.html
Copyright © 2011-2022 走看看