nodejs中for迴圈和非同步呼叫的那些坑

2021-08-03 02:25:30 字數 589 閱讀 7615

在nodejs中for迴圈中是不能巢狀使用非同步呼叫的,就像下面的:

我們定義乙個post請求,用於接受前端傳送來的檔案,然後使用for迴圈對目錄下的一些檔案依次做一些非同步呼叫事情(使用fs的stat)

router.post('/uploadfile', function (req, res)

for(let i = 0; i

console.log(i);})}

res.end("file is uploaded");

});});

這裡我們期望列印的log是從1到file檔案的數量-1,可結果不會如我們所想,因為是非同步呼叫,for迴圈不會按照要求執行,改進方式是使用遞迴呼叫

router.post('/uploadfile', function (req, res)

(function iterator(index)

fs.stat('./', req.files[index].originalname,function (err, stats) )

})res.end("file is uploaded");

});});

以上內容經過真實校驗,詳見:

nodeJS中的非同步程式設計

nodejs 不是單執行緒 在部落格專案中關於非同步問題 1.當使用者新增一條部落格時 需要通過post方式向伺服器傳送資料 後台獲取使用者以post方式拿到傳送過來的資料 然後存入資料庫 上面的 建立乙個空字串 當使用者向伺服器傳送請求時出發data事件將依次獲取來資料進行拼接 當使用者請求結束後...

NodeJs學習 非同步機制

當前遇到nodejs的非同步機制最大的問題是跟迴圈配合一起使用的時候,迴圈會一下併發所有的函式,舉個例子 function getid id for var id 0 id 4000 id 這樣會一下子將幾千個請求同時傳送出去,造成後面的請求無響應,本地loading過高,伺服器還可能會封ip等嚴重...

nodejs 非同步程式設計async await

參考 在路由js中 router.get function req,res,next router.post async function request,response module.exports router 在路由呼叫的js檔案login.js中 const global require ...