Browse Source

HW20 done

Alyona Brytvina 2 years ago
parent
commit
a80ca8af33
2 changed files with 50 additions and 0 deletions
  1. 10 0
      HW20/index.html
  2. 40 0
      HW20/main.js

+ 10 - 0
HW20/index.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>HW20</title>
+</head>
+<body>
+<script src="main.js"></script>
+</body>
+</html>

+ 40 - 0
HW20/main.js

@@ -0,0 +1,40 @@
+const delay = (ms) => new Promise(ok => setTimeout(() => ok(ms), ms));
+
+function run(gena) {
+    let iter = gena();
+
+    function next (result, error) {
+        let value, done;
+        if (!error) {
+            [{value, done}] = [iter.next(result)];
+            console.log(  [{value, done}])
+        } else {
+            [{value, done}] = [iter.throw(result)];
+            console.log(  [{value, done}])
+        }
+        if(done){
+            return;
+        }
+        if (value && typeof value?.then === 'function') {
+            value.then(next, err => next(undefined, err));
+        }else{
+           next({value})
+        }
+    }
+    next()
+}
+run(likeAsync);
+
+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('httpshghh://localhost:8080'));
+    } catch (e) {
+        console.log(e, 'Hi ERROR');
+    }
+}