สถานะของสัญญาที่ยกเลิกได้

ปัญหาที่เก่าแก่ที่สุดใน https://github.com/promises-aplus/cancellation-spec คือ (ในขณะนั้น ของการเขียน) อายุ 9 เดือน ฉันไม่พบแหล่งข้อมูลที่เชื่อถือได้เกี่ยวกับฟีเจอร์การยกเลิกตามสัญญา ‘มาตรฐาน’

ตอนนี้ดูเหมือนว่าฟีเจอร์นี้จะถูกนำมาใช้ใน bluebird แต่ในฐานะนักพัฒนาไลบรารี ฉันไม่ต้องการทำให้แพ็คเกจของฉันยุ่งเหยิงด้วยตัวเต็ม การดำเนินการตามสัญญา

สิ่งที่ฉันต้องการทำคือเพียงทำตามสัญญาและสนับสนุนข้อกำหนดการยกเลิก

ฉันจะหาข้อมูลนี้ได้ที่ไหน?


person Pier Paolo Ramon    schedule 14.02.2014    source แหล่งที่มา


คำตอบ (1)


สัญญาที่ยกเลิกได้จะไม่อยู่ใน ES6 เนื่องจากสัญญา ES6 มีน้อยมาก

การดำเนินการยกเลิกในพื้นที่ Promises/A+ ได้หยุดชะงักลง เนื่องจากเรารอให้การพัฒนาห้องสมุดพิสูจน์แนวทางหนึ่งที่เหนือกว่าอย่างเห็นได้ชัด แนวคิดล่าสุดอยู่ที่ปัญหานี้ ซึ่งเป็นสิ่งที่ห้องสมุดส่วนใหญ่มองหา การยกเลิกการดำเนินการดูเหมือนว่าจะตามมา (ไม่มากก็น้อย) ประเด็นสำคัญคือ:

  • การยกเลิกเป็นกรณีพิเศษของการปฏิเสธ
  • ปฏิกิริยาต่อการยกเลิกจะแพร่กระจายขึ้นไปในสายโซ่ เช่นเดียวกับการปฏิเสธจะแพร่กระจายลงด้านล่าง

ยังไม่ชัดเจนว่าคุณหมายถึงอะไรโดย "เพียงทำตามสัญญาและสนับสนุนข้อกำหนดการยกเลิก" คุณกำลังพยายามสร้างสิ่งเหล่านั้นภายใต้สมมติฐานที่ว่าผู้บริโภคในห้องสมุดของคุณจะแคสต์มัน แต่จะสืบทอดพฤติกรรมการยกเลิกบางอย่างในภายหลังหรือไม่? นั่นอาจจะยุ่งยากสักหน่อย โดยเฉพาะอย่างยิ่งเมื่อการยกเลิกโดยทั่วไปขึ้นอยู่กับตัวสร้าง Cancellation ที่ระบุซึ่งใช้ในการปฏิเสธสัญญา หากระบบนิเวศการยกเลิกได้รับการพัฒนามากขึ้น วิธีดำเนินการนี้ก็น่าจะตรงไปตรงมามากขึ้น

ส่วนอนาคตก็กำลังฟุ้งซ่าน! เส้นทางหนึ่งข้างหน้าคือการให้ใครสักคนสนับสนุนวิวัฒนาการของข้อเสนอการยกเลิกในพื้นที่ Promises/A+ โดยได้รับการตอบรับจากผู้ดำเนินการจากห้องสมุดหลักๆ เช่น Q, RSVP, When และ Bluebird ห้องสมุดเล็กๆ หลายแห่งก็น่าจะซื้อเข้ามา และคุณก็จะมีบางอย่างที่พึ่งพาได้ ถ้ามันพิสูจน์ได้ว่าเป็นที่นิยม ก็คงจะได้รับการพิจารณาให้เป็นสัญญาของ ECMAScript เช่นกัน!

แต่นั่นขึ้นอยู่กับผู้คนจำนวนมากที่ทำงานเป็นจำนวนมาก ดังนั้นเรามาดูกันว่าจะเกิดขึ้นหรือไม่ :) มันเป็นเรื่องมหัศจรรย์ที่มันจะเกิดขึ้นกับ Spec พื้นฐาน Promises/A+ แต่ใครจะรู้ล่ะ... มันสามารถเกิดขึ้นได้อีกครั้ง!

person Domenic    schedule 14.02.2014
comment
โดเมนิก งานของคุณเกี่ยวกับข้อกำหนดของสัญญานั้นยอดเยี่ยมมาก ขอบคุณสำหรับการชี้แจง และใช่ ฉันหมายความอย่างนั้นจริงๆ ความสามารถในการผลิต cancellable thenable คงจะยอดเยี่ยมมาก จะมีคนมีส่วนร่วมในการทำให้เรื่องนี้เป็นจริงได้อย่างไร? มีขอบคร่าวๆ มากมาย เช่น การยกเลิกผลลัพธ์ Promise.all และการรวมที่คล้ายกัน เป็นต้น - person Pier Paolo Ramon; 14.02.2014
comment
@PierPaoloRamon คุณสามารถไว้วางใจ Bluebird เพื่อสนับสนุน Cancellable ต่อไปในอนาคตอันใกล้ แต่ ณ จุดนี้มันเป็น 'เลือกเข้าร่วม' และไม่ใช่ 'เลือกไม่รับ' นั่นคือคุณต้องเรียกวิธีการตามสัญญาเพื่อที่จะยกเลิกได้ ดังนั้นเนื่องจากในฐานะ API จึงไม่มี 'ต้นทุน' ประสิทธิภาพสำหรับไลบรารีอย่างแย่ที่สุด สุดท้ายแล้วมันจะเป็นปลั๊กอิน ดังนั้นคุณจึงสามารถใช้งานต่อไปได้ ที่กล่าวว่าฉันอาจจะไม่เขียนโค้ดแบบหันหน้าเข้าหากัน (ไลบรารี) ที่นับว่าผู้ใช้รับรู้/คุ้นเคยกับพฤติกรรมนี้ เนื่องจากไม่ได้นำไปใช้กับไลบรารีอื่น ๆ ส่วนใหญ่ ณ จุดนี้หรือใน JS ดั้งเดิม - person Benjamin Gruenbaum; 14.02.2014
comment
ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวกับสิ่งเดียวกันหรือไม่ บางทีมันอาจจะเกี่ยวข้องกัน แต่ ข้อเสนอสัญญาที่ยกเลิกได้ของ TC39 ถูกถอนออกแล้ว - person user247702; 20.12.2016
comment
@Stijn นี่เป็นปัญหาเดียวกัน ถูก ถอนออก แต่ มีการเคลื่อนไหวล่าสุด (ชั่วโมงสุดท้าย) ในหัวข้อนี้ - person Pier Paolo Ramon; 20.12.2016
comment
@PierPaoloRamon ฉันเพิ่งสังเกตเห็นว่าผู้ตอบและแชมป์ข้อเสนอเป็นหนึ่งเดียวและเป็นคนคนเดียวกัน อ๊ะ :) - person user247702; 20.12.2016