10
จะตัดการเรียกฟังก์ชัน async ลงในฟังก์ชัน sync ใน Node.js หรือ Javascript ได้อย่างไร
สมมติว่าคุณรักษาห้องสมุดที่ exposes getDataฟังก์ชัน ผู้ใช้ของคุณเรียกสิ่งนี้ว่ารับข้อมูลจริง: ข้อมูล var output = getData(); Under the hood จะถูกบันทึกไว้ในไฟล์เพื่อให้คุณใช้งานgetDataโดยใช้ Node.js ในfs.readFileSyncตัว เห็นได้ชัดทั้งคู่getDataและfs.readFileSyncเป็นฟังก์ชันการซิงค์ วันหนึ่งคุณได้รับคำสั่งให้เปลี่ยนแหล่งข้อมูลพื้นฐานเป็น repo เช่น MongoDB ซึ่งสามารถเข้าถึงได้แบบอะซิงโครนัสเท่านั้น นอกจากนี้คุณยังได้รับคำสั่งให้หลีกเลี่ยงการทำให้ผู้ใช้ของคุณgetDataขุ่นเคืองไม่สามารถเปลี่ยน API ให้กลับมาเป็นเพียงคำสัญญาหรือเรียกร้องพารามิเตอร์การเรียกกลับ คุณมีคุณสมบัติตามข้อกำหนดทั้งสองอย่างไร ฟังก์ชันอะซิงโครนัสโดยใช้การเรียกกลับ / สัญญาคือ DNA ของ JavasSript และ Node.js แอป JS ที่ไม่สำคัญใด ๆ อาจจะเต็มไปด้วยรูปแบบการเข้ารหัสนี้ แต่การปฏิบัตินี้สามารถนำไปสู่สิ่งที่เรียกว่าปิรามิดแห่งการลงโทษได้อย่างง่ายดาย ยิ่งไปกว่านั้นหากรหัสใด ๆ ในผู้โทรใด ๆ ในสายการโทรขึ้นอยู่กับผลลัพธ์ของฟังก์ชัน async รหัสเหล่านั้นจะต้องถูกรวมไว้ในฟังก์ชันการโทรกลับเช่นกันซึ่งเป็นการกำหนดข้อ จำกัด รูปแบบการเข้ารหัสสำหรับผู้โทร ในบางครั้งฉันพบว่าจำเป็นต้องห่อหุ้มฟังก์ชัน async …