javaScript - Promise

109 阅读1分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

Promise,他是一个对象,是用来处理异步操作的,可以让我们写异步调用的时候写起来更加优雅,更加美观便于阅读。

Promise有三种状态:pending(进行中),resolved(完成),rejected(失败)。只有异步返回的结构可以改变其状态。所以,promise的过程一般只有两种:pending->resolved或者pending->rejected。

promise对象还有一个比较常用的then方法,用来执行回调函数,then方法接受两个参数,第一个是成功的resolved的回调,另一个是失败rejected的回调,第二个失败的回调参数可选。并且then方法里也可以返回promise对象,这样就可以链式调用了。

    var promise = new Promise(function(resolve,reject)
    setTimeout(function(){                              
      console.log("hello world");},2000);
    }); 

Promise 的api 

  •  Promise.resolve()
  •  Promise.reject()
  •  Promise.prototype.then()
  •  Promise.prototype.catch()
  •  Promise.all() // 所有的都有完成,相当于 且
  •  Promise.race() // 完成一个即可,相当于 或
  •  Promise.resolve()的作用将现有对象转为Promise对象resolvedl;Promise.resolve('test')==new Promise(resolve=>resolve('test'))
  •  Promise.reject()也是返回一个Promise对象,状态为rejected;
  •  then方法上边已经做介绍,这里就不再介绍。
  •  catch():发生错误的回调函数。
  •  Promise.all()适合用于所有的结果都完成了才去执行then()成功的操作