一、Promise的概念
1.语法上Promise是一个构造函数,用来封装异步操作并可以获取其成功或者失败的结果
2.Promise表示一个异步操作的最终状态,改善了传统代码的回调难维护,控制反转的问题。
二、异步编程与Promise的关系
1.通常来说,程序都是顺序执行的,同一时刻只会发生一件事。如果一个函数依赖于另一个函数的结果,它只能等待那个函数结束才能继续执行,从用户的角度来说,整个程序才算运行完毕。异步编程是可以让程序并行运行的一种手段,其可以让程序中的一个工作单元与主应用程序线程分开独立运行,并且在工作单元运行结束后,会通知主应用程序线程它的运行结果或者失败原因。使用异步编程可以提高应用程序的性能和响应能力等。
2.setTimeout和Promise函数的区别在于,setTimeout函数是一种基于回调函数的机制,例如:
通过一个定时器,在1000ms后再触发的。
但是Promise函数是一种基于状态的机制,是通过返回一个对象,来表示异步操作的状态顺序。
3.Promise具有更多的功能和优势。比如Promise可以处理异步操作的异常情况,而setTimeout需要在回调函数中手动处理异常。Promise还可以通过.catch()方法捕获异常,并返回一个新的Promise对象来表示异常的处理结果。此外,Promise还可以实现异步操作的取消、超时控制等功能。
三、Promise的作用与用法
1.promise的作用就是解决异步回调的问题
2.在Promise函数里resolve表示函数以成功方式完成,reject表示函数以失败的方式完成,在resolve函数执行完成后可以执行.then()的方法
3.Promise的方法
如果Promise函数调用resolve在异步函数.then()方法中就会打印一个value值
如果在数据读取发生了错误,就会调用reject函数,Promise对象状态就会变成一个失败,失败以后就会调用then()方法中的第二个回调函数
4..catch()方法,用于处理Promise函数的失败结果。
四、async/await的作用与用法
1.async是“异步”的简写, async 用于申明一个异步的 function
2.await 可以认为是 async wait 的简写,await 用于等待一个异步方法执行完成。
3.async/await是基于Promise实现的,async函数返回一个Promise对象,await可以等待一Promise对象的执行结果,如果该Promise对象是resolved状态,则返回其resolve的结果;如果该Promise对象是rejected状态,则抛出其reject的原因。
4.async函数配合await使用阻塞代码往下执行是异步方法,await语句必须在async函数中使用,使用async/await的代码看起来像是同步代码,但实际上是异步执行的。
5.应用场景
模拟出一个摇色子的异步操作,先通过一个方法三秒之后拿到一个筛子数,第二步进行输出