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

 

原文地址:https://www.cnblogs.com/liuXiaoDi/p/12589172.html