nodejs 學習摘要

2022-06-13 21:18:13 字數 1408 閱讀 6408

object.keys()

在實際開發中,我們有時需要知道物件的所有屬性,原生js給我們提供了乙個很好的方法:object.keys(),該方法返回乙個陣列,其中這個陣列的內容就是這個物件的所有鍵值

nodejs中foreach和普通迴圈區別

問題描述:

最近在寫**中發現在foreach迴圈中,使用await函式跟正常的迴圈有區別,所以進行記錄。

一般我們都將foreach叫做增強for迴圈,確實減少了部分**量,但是當內部使用await的時候需要注意,下面我寫了兩個例子。

1、如果在迴圈中不使用await這個promise,區別不大

2、foreach和普通迴圈中執行await函式情況

(1)foreach

[1,2,3].foreach(function hehe),先執行hehe(1),假如hehe裡面有非同步,就不會等它執行完,繼續執行hehe(2)了,所以有可能出現,整個函式執行完了,但是foreach裡面的函式還沒執行完

async function

test(),1000)})

console.log(t);

})console.log('end');

}test();

列印出來的結果是:start end 1 2 3

(2)普通迴圈

async function

test() , 1000) })

console.log(arr[index]);

} console.log('end');

}test();

列印結果為: start 1 2 3 end ,這才是我們需要的結果

for(let t of arr),這樣子是乙個promise完才進行下乙個,很多時候我們是需要這樣的

想:如果我們需要寫jest測試的時候,對於兩種情況,寫的測試**也應該是稍有區別的,普通迴圈的話我們只需要在測試的時候用await來寫,但是foreach因為在真正列印出來值之前已經結束了promise,那麼寫的時候是需要settimeout設定幾秒的。

3、foreach和普通迴圈中執行同步函式

**我就不貼上了,只需要把上面兩處的**中await new promise((resolve) => , 1000) })注釋掉即可,測試發現,兩個迴圈最終結果都是:start 1 2 3 end

4、理論知識的區別:

(1)for迴圈是可以使用break和continue去終止迴圈的,但是foreach不行

(2)foreach**量少

(3)for多數時候都可以使用,當然一般需要知道迴圈次數,而foreach更適合集合物件的遍歷和操作

(4)注意內部使用await的情況

(5)只能對元素進行順序的訪問,只能訪問陣列或集合中的所有元素,迴圈中沒有當前索引

c 學習摘要

1.析構函式為什麼多為虛函式 基類的成員函式如果為虛函式,那麼其子類可以重新實現該函式,如果基類成員函式不為虛函式,那麼子類如果想擁有該方法需要過載。析構函式在物件銷毀時呼叫,用以銷毀物件內那些未被銷毀的變數。這就要求子類可以有自己的析構函式,來銷毀自己的需要銷毀的變數。2.什麼是純虛函式 基類本身...

C學習摘要

在 c 語言中,凡不加返回值型別限定的函式,就會被編譯器作為返回整型值處理。在多重迴圈中,如果有可能,應當將最長的迴圈放在最內層,最短的迴圈放在最外層,以減少 cpu 跨切迴圈層的次數。return 語句不可返回指向 棧記憶體 的 指標 因為該內存在函式體結束時被自動銷毀。大端模式 big endi...

GC Tuning Case學習摘要

case 1 場景 4cpu 2.6.18 xmx1536m xms1536m xmn500m 目標減少gc次數,以避免由於gc造成難以支撐高併發量 方法 降低響應時間或請求次數,這個需要重構,比較麻煩 減少舊生代記憶體的消耗,比較靠譜 減少每次請求的記憶體消耗,貌似比較靠譜 降低gc造成的應用暫停...