index.html 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. /**
  12. * 异步编程 文件操作 网络操作 数据库操作
  13. *
  14. */
  15. // 定时器模拟 -- 回调地狱
  16. // setTimeout(()=>{
  17. // console.log(111)
  18. // setTimeout(()=>{
  19. // console.log(222)
  20. // },2000)
  21. // },1000)
  22. //1、 通过生成器函数
  23. function one(){
  24. setTimeout(()=>{
  25. console.log(111)
  26. iterator.next()
  27. },1000)
  28. }
  29. function two(){
  30. setTimeout(()=>{
  31. console.log(222)
  32. iterator.next()
  33. },2000)
  34. }
  35. function three(){
  36. setTimeout(()=>{
  37. console.log(333)
  38. iterator.next()
  39. },3000)
  40. }
  41. function * gen(){
  42. yield one()
  43. yield two()
  44. yield three()
  45. }
  46. //调用
  47. let iterator = gen()
  48. iterator.next()
  49. //2、获取用户数据 获取订单数据 获取商品数据
  50. function getUsers(){
  51. setTimeout(()=>{
  52. let data = 'user data'
  53. //调用next方法 传入数据
  54. iterator1.next(data)
  55. },1000)
  56. }
  57. function getOrders(users){
  58. setTimeout(()=>{
  59. let data = 'order data'
  60. iterator1.next(data)
  61. },1000)
  62. }
  63. function getGoods(orders){
  64. setTimeout(()=>{
  65. let data = 'good data'
  66. iterator1.next(data)
  67. },1000)
  68. }
  69. function * gen1(){
  70. let users = yield getUsers();
  71. console.log(users)
  72. let orders = yield getOrders(users);
  73. console.log(orders)
  74. let goods = yield getGoods(orders);
  75. console.log(goods)
  76. }
  77. let iterator1 = gen1()
  78. iterator1.next()
  79. </script>
  80. </body>
  81. </html>