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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 讓我為你整理這些重要的 JavaScript 異步程式設計里程碑: ## Promise 和 async/await 的歷史 ### Promise - **ECMAScript 6 (ES2015)** - 2015年正式引入 - **瀏覽器支援:** - Chrome 32+ (2014) - Firefox 29+ (2014) - Safari 8+ (2014) - IE 不支援,Edge 12+ (2015) ### async/await - **ECMAScript 2017 (ES8)** - 2017年正式引入 - **瀏覽器支援:** - Chrome 55+ (2016) - Firefox 52+ (2017) - Safari 10.1+ (2017) - Edge 14+ (2016) ## MQTT 在 JavaScript 的發展 ### MQTT 協定本身 - **MQTT 1.0:** 1999年由 IBM 開發 - **MQTT 3.1:** 2010年公開發布 - **MQTT 3.1.1:** 2014年成為 OASIS 標準 - **MQTT 5.0:** 2019年發布 ### JavaScript MQTT 函式庫 #### 1. **mqtt.js**(最流行的 Node.js MQTT 客戶端) - **首次發布:** 2011年左右 - **WebSocket 支援:** 2013年左右加入 - **瀏覽器支援:** 2014年開始支援瀏覽器環境 #### 2. **Paho JavaScript Client** - **發布:** 2013年由 Eclipse Foundation - 專門為瀏覽器設計的 MQTT over WebSocket #### 3. **現代發展** - **2015年後:** Promise 支援開始普及 - **2017年後:** async/await 支援 - **2018年後:** MQTT 5.0 支援 ## 技術演進的關係 ### 早期(2011-2014) ```javascript // 只有 callback 方式 mqttClient.publish(topic, message, function(error) { if (error) { console.error(error); } }); ``` ### Promise 時代(2015-2016) ```javascript // Promise 包裝 function publishMessage(topic, message) { return new Promise((resolve, reject) => { mqttClient.publish(topic, message, function(error) { if (error) { reject(error); } else { resolve(); } }); }); } ``` ### 現代(2017年後) ```javascript // async/await 語法 async function sendCommand() { try { await publishMessage(topic, message); console.log('發送成功'); } catch (error) { console.error('發送失敗:', error); } } ``` ## 重要時間點總結 - **2011:** JavaScript MQTT 客戶端出現 - **2013:** MQTT over WebSocket 讓瀏覽器可以直接使用 MQTT - **2015:** Promise 讓異步程式碼更易讀 - **2017:** async/await 讓異步程式碼看起來像同步程式碼 - **2019:** MQTT 5.0 帶來更多功能 所以你現在學習的 callback 方式其實是最**經典**和**相容性最好**的寫法,在所有環境都能正常運作!現代的 MQTT 函式庫通常同時支援 callback、Promise 和 async/await 三種方式。 |
Direct link: https://paste.plurk.com/show/UogE1V0HNVwllD2baWWb