diff --git a/zy-AST-原理+babel安装/AST-原理+babel安装.md b/zy-AST-原理+babel安装/AST-原理+babel安装.md
index f713f80..af7002a 100644
--- a/zy-AST-原理+babel安装/AST-原理+babel安装.md
+++ b/zy-AST-原理+babel安装/AST-原理+babel安装.md
@@ -241,4 +241,8 @@ Babel 手册
a
ayf
{ code: 'var a = "ayf";', map: null, rawMappings: undefined }
- var a = "ayf";
\ No newline at end of file
+ var a = "ayf";
+
+babel-types
+
+ https://www.babeljs.cn/docs/babel-types
\ No newline at end of file
diff --git a/zy-多线程调试worker/index.html b/zy-多线程调试worker/index.html
new file mode 100644
index 0000000..9147aff
--- /dev/null
+++ b/zy-多线程调试worker/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ 测试
+
+
+
+
+
\ No newline at end of file
diff --git a/zy-多线程调试worker/main.js b/zy-多线程调试worker/main.js
new file mode 100644
index 0000000..ebdc0a9
--- /dev/null
+++ b/zy-多线程调试worker/main.js
@@ -0,0 +1,3 @@
+console.log(111);
+var worker = new Worker('work.js');
+worker.postMessage('ayf');
diff --git a/zy-多线程调试worker/work.js b/zy-多线程调试worker/work.js
new file mode 100644
index 0000000..1626ac8
--- /dev/null
+++ b/zy-多线程调试worker/work.js
@@ -0,0 +1,4 @@
+console.log(self);
+self.addEventListener('message', function (e) {
+ console.log('You said: ' + e.data);
+}, false);
diff --git a/zy-多线程调试worker/多线程调试worker.md b/zy-多线程调试worker/多线程调试worker.md
new file mode 100644
index 0000000..982d3f4
--- /dev/null
+++ b/zy-多线程调试worker/多线程调试worker.md
@@ -0,0 +1,35 @@
+## 多线程
+
+如何开启线程
+
+ console.log(111);
+ var worker = new Worker('work.js');
+
+线程与线程传值问题
+
+ worker.postMessage('ayf');
+
+ 接收
+
+ console.log(self);
+ self.addEventListener('message', function (e) {
+ console.log('You said: ' + e.data);
+ }, false);
+
+拿到返回的子线程返回数据
+
+ self.onmessage = function (e) {
+ var uInt8Array = e.data;
+ postMessage('Inside worker.js: uInt8Array.toString() = ' + uInt8Array.toString());
+ postMessage('Inside worker.js: uInt8Array.byteLength = ' + uInt8Array.byteLength);
+ };
+
+得到几个关键词
+
+ 主线程 Worker onmessage postMessage
+ 子线程 self onmessage postMessage
+
+经过案例,我发现能通过搜索的上面的关键词快速的定位
+
+主线程不能直接调用子线程的方法
+