JavaScript的主要优势之一就是任何事情都是异步的。在大多数情况下,不同部分的代码不会影响其他的代码执行,然而这就造成了同步执行的困难,promis对象就是用来解决异步的问题
了解promise
promise三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)(一旦状态改变,就不会再变!!!)
回调函数调用过早 调用过早就是将异步函数作为同步处理了,javascript以单线程同步的方式执行主线程,遇到异步会将异步函数放入到任务队列中,当主线程执行完毕,会循环执行任务队列中的函数,也就是事件循环,直到任务队列为空
回调函数调用过晚或不被调用 回调函数调用过晚的处理原理和调用过早很类似, 在promise的then()中存放着异步函数,所有的异步都存在于js的任务队列中,当js的主线程执行完毕后,会依次执行任务队列中的内容,不会出现执行过晚的情况
回调函数调用次数过多或者过少 当状态变为失败时,就不会再变为成功,成功的函数也不会执行,反之亦然
事件循环和任务队列 事件循环就像是游乐场,玩过一个游戏后,你需要重新排到队尾才能再玩一次 任务队列就是,在你玩过一个游戏后,可以插队接着玩 (づ●─●)づ )
注意:不管是失败还是成功,回调函数都会被调用 其次,promise一旦新建,状态不能取消, 处于 pending 状态时,不能了解状态,不会被改变, 还有它可以将异步以同步的方式展现,减少了层层嵌套的麻烦
这里是十澈 喜欢的点个赞,谢谢 如有错误,请指正
|