# ES 6/7 ## Async ```js async function fn(args){ // ... } // 等同于 function fn(args){ return spawn(function*() { // ... }); } ``` 多个`await`命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。 ```javascript let foo = await getFoo(); let bar = await getBar(); ``` 上面代码中,`getFoo`和`getBar`是两个独立的异步操作(即互不依赖),被写成继发关系。这样比较耗时,因为只有`getFoo`完成以后,才会执行`getBar`,完全可以让它们同时触发。 ```javascript // 写法一 let [foo, bar] = await Promise.all([getFoo(), getBar()]); // 写法二 let fooPromise = getFoo(); let barPromise = getBar(); let foo = await fooPromise; let bar = await barPromise; ``` 上面两种写法,`getFoo`和`getBar`都是同时触发,这样就会缩短程序的执行时间。 ## Proxy ```bash node --harmony-proxies ``` 示例代码: ```js const proxy = new Proxy({}, { get: (target, property) => (test) => [target, property, test] }); console.log(proxy.func); // [Function] console.log(proxy.func('123')); // [ {}, 'func', '123' ] ```