1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | let fibonacci = { [Symbol.iterator]: function*() { let pre = 0, cur = 1; for (;;) { let temp = pre; pre = cur; cur += temp; yield cur; } } } for (let n of fibonacci) { // truncate the sequence at 1000 if (n > 1000) break; console.log(n); } |
1 2 3 4 5 6 7 8 9 | let m = new Map(); m.set("key1", "value1"); m.set("key2", "value2"); m.forEach((key, value, map) => { console.log(key,"=",value," from ", map); }) console.log(m.keys()); console.log(m.values()); |
1 2 3 4 5 6 | let s = new Set(); s.add("Ted"); s.add("Jenni"); s.add("Athen"); s.add("Ted"); // duplicate! console.log(s.size); // 3 |
如果一个被用作 WeakMap 键/值对的对象仅能跟随从 WeakMap 内开始的引用链访问,那么这个键/值对就无法访问,会自动从 WeakMap 删除。本文不再赘述 WeakMaps 和 WeakSets 的效用。它们主要用于库代码(尤其是与缓存相关的代码),在应用程序代码中可能不会过多地出现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | let bookOrder = {'isbn': '978-0375504525', 'qty': 1}; function processBookOrders() { setTimeout(function() { // pretend this is an async call to an orders database console.log('Getting the next order'); let nextBookOrder = bookOrder; setTimeout(function() { // pretend this is an async call to a books database console.log(`Looking for ISBN ${nextBookOrder.isbn}`); if (nextBookOrder.isbn == '978-0375504525') { console.log('The book title is \'As I Lay Dying\''); // pretend this is an async call to check stock levels setTimeout(function() { if (nextBookOrder.qty == 1) console.log('The book is in stock!'); else console.log('We do not have enough copies of the book in stock.'); }, 1000); // end of call to check stock levels } else console.log('This is not a book we carry.'); }, 1000); // end of call to the books database }, 1000); // end of call to the orders database }; processBookOrders(); |
doSomething.then(function(result) { console.log(result); // It did something }).catch(function(err) { console.log(err); // Error }); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |