3-1 async

  1. /* async可以将一个普通函数的返回值变成promise */
  2. async function go(){
  3. return "p"
  4. }
  5. console.log(go());//promise
  6. go().then(res=>{
  7. console.log(res)//p
  8. })

3-2 await

  1. /*
  2. 1、await关键字只能在async函数使用,不能在普通函数中使用
  3. 2、await 相当于then,获取获取promise--resolve的结果
  4. */
  5. async function show(){
  6. console.log("start");
  7. var p = await go();
  8. console.log(p);
  9. console.log("end")
  10. }
  11. async function go(){
  12. return "mid"
  13. }
  14. show();
  15. //start
  16. mid
  17. end
  1. /* await 后面如果是promise会得到then的结果 */
  2. async function show(){
  3. console.log("start");
  4. var p =await Promise.resolve("mid")
  5. console.log(p);
  6. console.log("end")
  7. }
  8. show();
  9. //start
  10. mid
  11. end
  1. /* await
  2. 1、相当于执行了promise的then函数
  3. 2、await后面不一定跟promise
  4. 3、await阻塞函数的执行,优先执行同步的代码再去之后await执行完毕之后的内容
  5. */
  6. async function show(){
  7. console.log("start");
  8. await mid();
  9. console.log("end")
  10. }
  11. async function mid(){
  12. console.log("mid");
  13. }
  14. show();
  15. console.log("a1");
  16. //
  17. start
  18. mid
  19. al
  20. end
  1. <!-- await会阻塞函数的执行,会优先执行await后面同步的代码,异步代码等待同步代码执行完毕之后再去执行 -->
  2. <script>
  3. async function a1(){
  4. console.log("a1");
  5. await a2();
  6. console.log("end")
  7. }
  8. async function a2(){
  9. console.log("a2");
  10. }
  11. a1();
  12. console.log("a3");
  13. Promise.resolve().then(()=>{
  14. console.log("a4")
  15. })
  16. /*
  17. a1
  18. a2
  19. a3
  20. end
  21. a4
  22. */
  23. </script>

3-3 await http请求

  1. /* await--async可以将异步变成同步代码 */
  2. var url = 'http://47.108.197.28:3000/top/playlist';
  3. async function show(){
  4. var res = await $.ajax({url});
  5. var id = res.playlists[0].id
  6. var url02 = `http://47.108.197.28:3000/playlist/detail?id=${id}`;
  7. var detail = await $.ajax({url:url02});
  8. console.log(detail)
  9. }
  10. show();