特点:

await 相当于then,获取promise—resolve的结果
await 后面如果是promise 会得到then的结果
await 关键字只能在async函数中使用 不能在普通函数中使用
await 后面不一定跟promise
await会阻阻塞函数后面的代码 切割函数 会优先执行同步的代码 之后再去执行await之后的代码
await会阻塞函数的执行 会优先执行await后面同步的代码 异步代码要等待同步代码执行完毕后再去执行

  1. <script>
  2. //await 关键字只能在async函数中使用 不能在普通函数中使用
  3. // await 相当于then,获取promise--resolve的结果
  4. async function show() {
  5. console.log("1");
  6. var p = go()
  7. console.log(p);
  8. console.log(3);
  9. }
  10. async function go() {
  11. return "2"
  12. }
  13. show()
  14. </script>

image.png
1- await 相当于then,获取promise—resolve的结果
将上文加上await

  1. var p = await go()

image.png
2-await 后面如果是promise 会得到then的结果

  1. <script>
  2. //await 后面如果是promise 会得到then的结果
  3. async function show(){
  4. console.log("1");
  5. var p=await Promise.resolve("2")
  6. console.log(p)
  7. console.log(3);
  8. }
  9. show()
  10. </script>

image.png

3-await 关键字只能在async函数中使用 不能在普通函数中使用

  1. var p = new Promise((resolve, reject) => {
  2. resolve(1)
  3. reject(2)
  4. })
  5. function show() {
  6. var res = await p
  7. console.log(res);
  8. }
  9. show()

image.png
在函数前加上async

  1. <script>
  2. var p = new Promise((resolve, reject) => {
  3. resolve(1)
  4. reject(2)
  5. })
  6. async function show() {
  7. var res = await p
  8. console.log(res);
  9. }
  10. show()
  11. </script>

image.png
await 后面不一定跟promise

  1. <script>
  2. //await 后面不一定跟promise
  3. async function show() {
  4. console.log(1);
  5. await mid()
  6. console.log(3);
  7. }
  8. async function mid() {
  9. console.log(2);
  10. }
  11. show()
  12. </script>

await会阻阻塞函数后面的代码 切割函数 会优先执行同步的代码 之后再去执行await之后的代码

  1. <script>
  2. //await 后面不一定跟promise
  3. async function show() {
  4. console.log(1);
  5. await mid()
  6. console.log(3);
  7. }
  8. async function mid() {
  9. console.log(2);
  10. }
  11. show()
  12. console.log("a1");
  13. </script>

image.png
将原代码切成了这样
image.png
image.png
await会阻塞函数的执行 会优先执行await后面同步的代码 异步代码要等待同步代码执行完毕后再去执行

  1. async function a1(){
  2. console.log("a1");
  3. await a2();
  4. console.log("end");
  5. }
  6. async function a2(){
  7. console.log("a2");
  8. }
  9. a1()
  10. console.log("a3");
  11. Promise.resolve().then(()=>{
  12. console.log("a4");
  13. })

image.png