Vika 2 years ago
parent
commit
0ff67dd11a
3 changed files with 67 additions and 0 deletions
  1. 13 0
      js20/index.html
  2. 54 0
      js20/main.js
  3. 0 0
      js20/style.css

+ 13 - 0
js20/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <link rel="stylesheet" href="style.css">
+</head>
+<body>
+ <script src="main.js"></script> 
+</body>
+</html>

+ 54 - 0
js20/main.js

@@ -0,0 +1,54 @@
+const delay = (ms) => new Promise((resolve, reject) => setTimeout(() => resolve('Vika'), ms));
+function* likeAsync () {
+  console.log(1);
+  console.log(yield 1.5);
+  let res1 = yield delay(2000);
+  console.log(2, res1);
+  let res2 = yield delay(2000);
+  console.log(3, res2);
+  try {
+    console.log(yield fetch("http://localhost:10000"));
+ }
+ catch (e) {
+   console.log('generator error catch', e);
+ }
+ let res3 = yield delay(2000);
+  console.log(4, res3);
+  
+  let res4 = yield delay(2000);
+  console.log(5, res4);
+}
+
+
+
+function run (gena) {
+  let iter = gena();
+  function next(result, error) {
+  let value;
+  let done;
+
+  if (error) {
+    const errGen = iter.throw(error);
+    value = errGen.value;
+    done =  errGen.done;
+    }
+  if(!error) { 
+    const resultGen = iter.next(result);
+    value = resultGen.value;
+    done =  resultGen.done;
+  }
+  if (done) {return};
+   
+  if(value && typeof value?.then === 'function'){
+      value.then(next, err => next(undefined, err))
+  } else {
+      next(value);
+    }
+  }
+  next();
+}
+
+run(likeAsync);
+
+
+

+ 0 - 0
js20/style.css