index.html 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. * yield : 函数代码分隔符
  15. */
  16. //声明方式
  17. function* gen(){
  18. console.log('hhh')
  19. yield 'hello'
  20. console.log('111')
  21. yield 'hi'
  22. console.log('222')
  23. yield 'youxi'
  24. console.log('333')
  25. }
  26. let iterator = gen()
  27. //console.log(iterator) //输出迭代器对象
  28. iterator.next() // hhh
  29. iterator.next() // 111
  30. iterator.next() // 222
  31. iterator.next() // 333
  32. //可以使用for of遍历
  33. for(let v of gen()){
  34. console.log(v) // 每一个yield后的表达式
  35. }
  36. //参数传递
  37. function* gen1(arg){
  38. console.log(arg)
  39. let bbb = yield 'hello'
  40. console.log(bbb)
  41. yield 'hi'
  42. }
  43. let iterator1 = gen1('testwww')
  44. console.log(iterator1.next());
  45. console.log(iterator1.next('bbb')); //next传入参数,会把它当作前一个yield返回结果
  46. </script>
  47. </body>
  48. </html>