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

     

  • 相关阅读:
    用c写一个小的聊天室程序
    socket相关的开机初始化分析
    HTML——CSS3学习
    iOS--OCR图片识别
    iOS学习——Socket
    iOS学习——数据加密
    iOS学习——并发编程GCD
    iOS学习——weak的应用场景
    iOS学习——RUNLOOP、NSTimer
    iOS学习——锁
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/12589172.html
Copyright © 2011-2022 走看看