国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺談Express異步進化史

2024-05-06 15:26:59
字體:
來源:轉載
供稿:網友

1、導言

在 Javascript 的世界里,異步(由于JavaScript的單線程運行,所以JavaScript中的異步是可以阻塞的)無處不在。

Express 是 node 環境中非常流行的Web服務端框架,有很大比例的 Node Web應用 采用了 Express。

當使用 JavaScript 編寫服務端代碼時,我們無可避免的會大量使用到異步。隨著 JavaScript、Node 的進化,我們的異步處理方式,也就隨之進化。

接下來,我們就來看看 Express 中異步處理的進化過程。

2、JavaScript的異步處理

在異步的世界里,我們需要想辦法獲取的異步方法完畢的通知,那在 JavaScript 中,會有哪些方式呢?

2.1、回調

回調是 JS 中最原始,也是最古老的異步通知機制。

function asyncFn(callback) { // 利用setTimeout模擬異步 setTimeout(function () {  console.log('執行完畢');  callback(); // 發通知 }, 2000);}asyncFn(function () { console.log('我會在2s后輸出');});

2.2、事件監聽

要獲取結果的函數,監聽某個時間。在異步方法完成后,觸發該事件,達到通知的效果。

2.3、發布/訂閱

通過觀察者模式,在異步完成時,修改發布者。這個時候,發布者會把變更通知到訂閱者。

2.4、Promise

Promise 是回調函數的改進。使用它, 我們可以將異步平行化,避免回調地獄。

function asyncFn() { return new Promise((resolve, reject) => {  // 利用setTimeout模擬異步  setTimeout(function () {   console.log('執行完畢');   resolve(); // 發通知(是否有感覺到回調的影子?)  }, 2000); });}asyncFn() .then(function () {  console.log('我會在2s后輸出'); });

2.5、生成器(Generator)

Generator 函數是 ES6 提供的一種異步編程解決方案。

以下代碼只是簡單演示,實際上 Generator 的使用過程,相對是比較復雜的,這是另外一個話題,本文暫且不表。

function asyncFn() { return new Promise((resolve, reject) => {  // 利用setTimeout模擬異步  setTimeout(function () {   console.log('執行完畢');   resolve(); // 發通知(是否有感覺到回調的影子?)  }, 2000); });}function* generatorSync() { var result = yield asyncFn();}var g = generatorSync();g.next().value.then(()=>{ console.log('我會在2s后輸出');});

2.6、async...await

可以說是當前 JavaScript 中,處理異步的最佳方案。

function asyncFn() { return new Promise((resolve, reject) => {  // 利用setTimeout模擬異步  setTimeout(function () {   console.log('執行完畢');   resolve(); // 發通知(是否有感覺到回調的影子?)  }, 2000); });}async function run(){ await asyncFn(); console.log('我會在2s后輸出');}run();

3、Express中的異步處理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 漳平市| 灵川县| 湖南省| 肥东县| 桂东县| 司法| 长治县| 西吉县| 阿克苏市| 娄烦县| 武冈市| 阆中市| 车致| 东方市| 沈阳市| 上饶市| 达孜县| 阳春市| 赤峰市| 紫阳县| 丰镇市| 洪洞县| 宜城市| 钦州市| 江川县| 哈巴河县| 兴山县| 嘉鱼县| 梁平县| 吉首市| 九江市| 鞍山市| 麻栗坡县| 长寿区| 郓城县| 新平| 山西省| 昭苏县| 修文县| 新乡县| 新乡县|