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://my.oschina.net/u/2998098/blog/1540520