同步模式
按照顺序执行
异步模式
并不是严格意义按照顺序执行,一个方法执行后,会等待回调函数,这个时候可以执行下一个方法了.
在服务器端,"异步模式"甚至是唯一的模式,因为执行环境是单线程的
promise
Promise构造函数接收一个函数作为参数,这个函数有两个参数 resolve reject
resolve 把不成功变成成功
reject 把未失败变成失败
promise特点
对象不受外界影响,初始状态为pending(等待中),结果的状态为resolve和reject,只有异步操作的结果决定这一状态
状态只能由pending变为另外两种的其中一种,且改变后不可逆也不可再度修改,
即pending -> resolved 或 pending -> reject
then
then方法下一次的输入需要上一次的输出
如果一个promise执行完后 返回的还是一个promise,会把这个promise 的执行结果,传递给下一次then中
如果then中返回的不是Promise对象而是一个普通值,则会将这个结果作为下次then的成功的结果
如果当前then中失败了 会走下一个then的失败
如果返回的是undefined 不管当前是成功还是失败 都会走下一次的成功
catch是错误没有处理的情况下才会走
then中不写方法则值会穿透,传入下一个then中