โดย jataz2 » 05/08/2019 2:18 pm
ถ้าใช้ .net สามารถสั่งให้ thread ปัจจุบัน หยุด รอ โดยใช้ System.Threading.Thread.Sleep(จำนวนมิลลิวินาที) แล้วค่อยทำงานต่อได้
แต่ใน javascript ไม่สามารถสั่งให้ thread หยุดรอได้ และ มีแค่ thread เดียว (่javascript เพียวๆไม่มี multi-thread แต่ในปัจจุบันมันมี library ที่ทำ multi thread ได้)
งานบางอย่างเช่นติดต่อกับอุปกรณ์ และต้องรอให้อุปกรณ์มันทำงานเสร็จและส่งผลลัพท์กลับมา ใน javascript จึงเลี่ยงไปใช้เทคนิค การ callback แทน
ยกตัวอย่างเช่นการอ่านสมาร์ทการ์ด เสียบบัตร และรอให้เครื่องอ่านบัตรอ่านเสร็จ ใช้เวลาประมาณ 15 วินาที จังหวะที่เราเสียบบัตรเข้าไป และรอจนอ่านบัตรเสร็จให้มัน callback ค่าที่อ่านได้มาที่ function callback
โดยขั้นตอนที่สั่งให้เริ่มอ่านบัตร มันไม่สามารถส่งให้หยุดรอ 15 วินาที จนอ่านบัตรเสร็จได้ javascript มันวิ่งเลยจนจบไปแล้ว
ถ้าใช้ .net สามารถสั่งให้ thread ปัจจุบัน หยุด รอ โดยใช้ System.Threading.Thread.Sleep(จำนวนมิลลิวินาที) แล้วค่อยทำงานต่อได้
แต่ใน javascript ไม่สามารถสั่งให้ thread หยุดรอได้ และ มีแค่ thread เดียว (่javascript เพียวๆไม่มี multi-thread แต่ในปัจจุบันมันมี library ที่ทำ multi thread ได้)
งานบางอย่างเช่นติดต่อกับอุปกรณ์ และต้องรอให้อุปกรณ์มันทำงานเสร็จและส่งผลลัพท์กลับมา ใน javascript จึงเลี่ยงไปใช้เทคนิค การ callback แทน
ยกตัวอย่างเช่นการอ่านสมาร์ทการ์ด เสียบบัตร และรอให้เครื่องอ่านบัตรอ่านเสร็จ ใช้เวลาประมาณ 15 วินาที จังหวะที่เราเสียบบัตรเข้าไป และรอจนอ่านบัตรเสร็จให้มัน callback ค่าที่อ่านได้มาที่ function callback
โดยขั้นตอนที่สั่งให้เริ่มอ่านบัตร มันไม่สามารถส่งให้หยุดรอ 15 วินาที จนอ่านบัตรเสร็จได้ javascript มันวิ่งเลยจนจบไปแล้ว