คำถามติดแท็ก continuation-passing

3
อะไรคือความแตกต่างระหว่างการต่อเนื่องและการโทรกลับ?
ฉันท่องเว็บไปทั่วเพื่อค้นหาการรู้แจ้งเกี่ยวกับความต่อเนื่องและเป็นเรื่องที่น่าเหลือเชื่อว่าคำอธิบายที่ง่ายที่สุดสามารถสร้างความสับสนให้กับโปรแกรมเมอร์ JavaScript อย่างฉันได้อย่างไร โดยเฉพาะอย่างยิ่งเมื่อบทความส่วนใหญ่อธิบายความต่อเนื่องของโค้ดใน Scheme หรือใช้ monads ในที่สุดฉันก็คิดว่าฉันเข้าใจสาระสำคัญของความต่อเนื่องแล้วฉันอยากรู้ว่าสิ่งที่ฉันรู้นั้นเป็นความจริงหรือไม่ ถ้าสิ่งที่ฉันคิดว่าเป็นความจริงไม่เป็นความจริงก็เป็นความไม่รู้และไม่ใช่การรู้แจ้ง นี่คือสิ่งที่ฉันรู้: ในเกือบทุกภาษาฟังก์ชันจะส่งคืนค่า (และการควบคุม) ไปยังผู้โทรอย่างชัดเจน ตัวอย่างเช่น: var sum = add(2, 3); console.log(sum); function add(x, y) { return x + y; } เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายข้อมูลโค้ด ตอนนี้ในภาษาที่มีฟังก์ชันชั้นหนึ่งเราอาจส่งผ่านการควบคุมและส่งคืนค่าไปยังการเรียกกลับแทนที่จะส่งกลับไปยังผู้โทรอย่างชัดเจน: add(2, 3, function (sum) { console.log(sum); }); function add(x, y, cont) { cont(x + y); } เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายข้อมูลโค้ด ดังนั้นแทนที่จะส่งคืนค่าจากฟังก์ชันเรากำลังดำเนินการต่อด้วยฟังก์ชันอื่น ดังนั้นฟังก์ชันนี้จึงถูกเรียกว่าต่อเนื่องจากฟังก์ชันแรก …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.