[問題] Node.js child.on("end")範例的Done印不出來

看板Ajax作者 (小孩)時間8年前 (2016/11/04 18:25), 8年前編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
各位好 我在跑書上的範例 var child_process = require("child_process"); var ls = child_process.spawn("ls",["-l"]); ls.stdout.on("data",function(data) { console.log(data); }); ls.on("end",function(code) { console.log("Done"); }); 當程式跑完後他卻一直沒辦法印出Done這個字 想請問是出了什麼問題呢? 用ls -l在command line下跑結果跟這程式的結果一模一樣 但照理來說跑完後他應該要印出Done才對卻沒有印出來 先謝謝回答了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.249.56 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1478255132.A.EFD.htmlyoutuuube000:轉錄至看板 Web_Design 11/04 18:25 ※ 編輯: youtuuube000 (140.112.249.56), 11/04/2016 18:28:42

11/04 20:03, , 1F
確定有end event?
11/04 20:03, 1F
我不太確定有沒有end event 因為第一次接觸還在學 但書上說當所有檔案印出來後 ls程式將會結束 然後我們會收到end事件,所以會印一行Done的字串 只是我實際跑的結果似乎沒有end事件的樣子 我在想可能跟spawm的用法有關 只是不知道原因出在哪@@ ※ 編輯: youtuuube000 (140.112.249.56), 11/04/2016 20:12:05 想請問一下end事件出現的條件是什麼呢? 謝謝回答了!!!!! ※ 編輯: youtuuube000 (140.112.249.56), 11/04/2016 20:13:29

11/05 02:18, , 2F
應該是書上寫錯?我看了一下NodeJS的文件,child_process的
11/05 02:18, 2F

11/05 02:18, , 3F
event裡面沒有end,比較接近的應該是exit
11/05 02:18, 3F

11/05 02:18, , 4F

11/05 02:19, , 5F
所以你 ls.on('exit' //下略,就能看到你想看到的done
11/05 02:19, 5F

11/06 00:53, , 6F
我看了一下我寫過的是用'close'應該也可以
11/06 00:53, 6F
知道了謝謝各位回答!!! ※ 編輯: youtuuube000 (140.112.249.56), 11/07/2016 07:19:00
文章代碼(AID): #1O768Sxz (Ajax)
文章代碼(AID): #1O768Sxz (Ajax)