[node] 請問有沒有辦法寫一個非阻塞的function

看板Ajax作者 (OrO3)時間9年前 (2015/12/06 22:06), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
node.js採用事件驅動模式 在語言以及標準庫當中用了很多非阻塞的function 例如寫入檔案時 fs.appendFile() 那我想請問,有沒有辦法自己建立一個這種,非阻塞的function ? 像是叫他算個東西,算完在再丟上來,而不要佔用主執行緒之類的 像是 function count(callback){ //算一些很浪費時間的東西 callback(500); } console.log("start"); count(function(ans){ console.log("ans:"+ans); }); console.log("end"); 會顯示 start end ans:500 (沒阻塞在count) 而不是 start ans:500 end (阻塞在count) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.38.80.3 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1449410811.A.A16.html

12/06 22:36, , 1F
利用 child_process 可以辦到
12/06 22:36, 1F

12/06 22:37, , 2F
可以把需要計算的東西丟到子程序計算
12/06 22:37, 2F

12/06 22:37, , 3F
不過用node.js跑需要大量計算的東西其實本來就不是很
12/06 22:37, 3F

12/06 22:37, , 4F
適合
12/06 22:37, 4F

12/06 22:55, , 5F
原來如此
12/06 22:55, 5F

12/07 16:56, , 6F
fibers 不過fibers在比較新的node.js版本好像有問題?
12/07 16:56, 6F

12/07 22:18, , 7F
fibers 貌似還是跑在主thread上阿,load太大還是會影響
12/07 22:18, 7F

12/07 22:18, , 8F
到主程式
12/07 22:18, 8F

12/08 14:14, , 9F
12/08 14:14, 9F
文章代碼(AID): #1MP43xeM (Ajax)
文章代碼(AID): #1MP43xeM (Ajax)