在使用 nodejs 時,大家都知道很多函式都是使用 callback 的方式來撰寫,但有時候我們可能希望同步的執行程式碼。 舉個例子: 比如我們要將多筆資料,一筆一筆的塞進去 mongoDB 藉由上面這段程式碼,我們會非同步的執行資料一筆一筆塞入 mongoDB 的動作,但這樣非同步的塞資料,可能會導致機器負載過高,甚至 mongoDB 無法負荷等等。 所以,有時候我們會希望是一筆一筆資料同步的塞進去,而不是非同步執行。 這時候,我們就可以使用 callback 的寫法來時做這個迴圈,如下程式碼: var i=0; var max=docs.length; (function insertData() { db.collection(‘data’).insertOne({….}, (err, result) => { i++; if(i<max) insertData(); }); }()); 這樣就可以保證一筆塞完成功後,才會再塞下一筆。上面程式碼有用到 IIFE(立即執行函式)