คำถามติดแท็ก jquery-deferred

10
jQuery รอการตัดบัญชีและสัญญา - .then () vs .done ()
ฉันอ่านเกี่ยวกับ jQuery รอการตัดบัญชีและสัญญาและฉันไม่เห็นความแตกต่างระหว่างการใช้.then()& .done()สำหรับการโทรกลับที่ประสบความสำเร็จ ฉันรู้ว่าEric Hyndsพูดถึงเรื่องนั้น.done()และ.success()แมปไปยังฟังก์ชั่นเดียวกัน แต่ฉันเดา.then()ว่าจะเป็นเช่นนั้นเพราะการเรียกกลับทั้งหมดถูกเรียกใช้เมื่อการดำเนินการที่ประสบความสำเร็จเสร็จสิ้น ใครช่วยสอนฉันให้ฉันเกี่ยวกับการใช้ที่ถูกต้องได้ไหม

9
ผ่านอาร์เรย์ของ Deferreds เป็น $. เมื่อ ()
นี่คือตัวอย่างที่คาดการณ์ไว้ของสิ่งที่เกิดขึ้น: http://jsfiddle.net/adamjford/YNGcm/20/ HTML: <a href="#">Click me!</a> <div></div> JavaScript: function getSomeDeferredStuff() { var deferreds = []; var i = 1; for (i = 1; i <= 10; i++) { var count = i; deferreds.push( $.post('/echo/html/', { html: "<p>Task #" + count + " complete.", delay: count }).success(function(data) { $("div").append(data); })); } …

11
jQuery สามารถเลื่อนเวลาออกไปได้อย่างไร
jQuery 1.5 นำวัตถุรอตัดบัญชีใหม่และวิธีการที่แนบมา.when, และ.Deferred._Deferred สำหรับผู้ที่ไม่ได้ใช้.Deferredมาก่อนผมเคยข้อเขียนแหล่งสำหรับมัน อะไรคือวิธีที่เป็นไปได้ของวิธีการใหม่เหล่านี้ ฉันได้อ่านAPIและแหล่งข้อมูลแล้วฉันจึงรู้ว่ามันทำอะไร คำถามของฉันคือเราจะใช้คุณสมบัติใหม่เหล่านี้ในรหัสประจำวันได้อย่างไร ฉันมีตัวอย่างง่ายๆของคลาสบัฟเฟอร์ที่เรียกใช้การร้องขอ AJAX ตามลำดับ (ถัดไปหนึ่งเริ่มหลังจากที่ก่อนหน้านี้เสร็จสิ้น) /* Class: Buffer * methods: append * * Constructor: takes a function which will be the task handler to be called * * .append appends a task to the buffer. Buffer will only call a task when the …

4
คุณทำงานกับอาร์เรย์ของ jQuery Deferreds อย่างไร
ฉันมีแอปพลิเคชันที่ต้องโหลดข้อมูลตามลำดับที่กำหนด: URL รูทจากนั้นสคีมาจากนั้นจึงเริ่มต้นแอปพลิเคชันด้วยสกีมาและ URL สำหรับวัตถุข้อมูลต่างๆ ในขณะที่ผู้ใช้สำรวจแอปพลิเคชันอ็อบเจ็กต์ข้อมูลจะถูกโหลดตรวจสอบความถูกต้องกับสคีมาและแสดง เนื่องจากผู้ใช้ CRUD ข้อมูลสคีมาจะให้การตรวจสอบความถูกต้องก่อน ฉันมีปัญหากับการเริ่มต้น ฉันใช้การเรียก Ajax เพื่อดึงอ็อบเจ็กต์รูท $. เมื่อ () จากนั้นสร้างอาร์เรย์ของสัญญาหนึ่งรายการสำหรับแต่ละออบเจ็กต์สคีมา ที่ได้ผล ฉันเห็นการดึงข้อมูลในคอนโซล จากนั้นฉันเห็นการดึงข้อมูลสำหรับสคีมาทั้งหมดดังนั้นการเรียก $ .ajax () แต่ละครั้งจึงใช้ได้ fetchschemas () ส่งคืนอาร์เรย์ของสัญญา อย่างไรก็ตามสุดท้ายเมื่อประโยค () ไม่เคยเริ่มทำงานและคำว่า "DONE" จะไม่ปรากฏบนคอนโซล ซอร์สโค้ดไปยัง jquery-1.5 ดูเหมือนจะบอกเป็นนัยว่า "null" เป็นที่ยอมรับในฐานะอ็อบเจกต์ที่จะส่งผ่านไปยัง $ .when.apply () เนื่องจากเมื่อ () จะสร้างอ็อบเจ็กต์ Deferred () ภายในเพื่อจัดการรายการหากไม่มีอ็อบเจ็กต์ ผ่านเข้ามา สิ่งนี้ใช้ได้กับ Futures.js อาร์เรย์ของ …



3
ฉันควรใช้เมธอด“ then” ของ jQuery deferred เมื่อไรและควรใช้เมธอด“ pipe” เมื่อใด
jQuery Deferredมีสองฟังก์ชั่นที่สามารถใช้เพื่อปรับใช้ฟังก์ชัน Chaining แบบอะซิงโครนัส: then() deferred.then( doneCallbacks, failCallbacks ) Returns: Deferred doneCallbacksฟังก์ชันหรืออาร์เรย์ของฟังก์ชันที่เรียกเมื่อ Deferred ได้รับการแก้ไข failCallbacksฟังก์ชันหรืออาร์เรย์ของฟังก์ชันที่เรียกว่าเมื่อ Deferred ถูกปฏิเสธ pipe() deferred.pipe( [doneFilter] [, failFilter] ) Returns: Promise doneFilterฟังก์ชันทางเลือกที่ถูกเรียกใช้เมื่อ Deferred ได้รับการแก้ไข failFilterฟังก์ชันทางเลือกที่ถูกเรียกใช้เมื่อ Deferred ถูกปฏิเสธ ฉันรู้ว่าthen()ใช้เวลานานกว่าเล็กน้อยpipe()ดังนั้นอย่างหลังจึงต้องเพิ่มผลประโยชน์พิเศษบางอย่าง แต่สิ่งที่แตกต่างอย่างชัดเจนก็ทำให้ฉันหายไป ทั้งสองใช้พารามิเตอร์การเรียกกลับที่เหมือนกันแม้ว่าจะแตกต่างกันในชื่อและความแตกต่างระหว่างการส่งคืน a Deferredและส่งคืนPromiseดูเหมือนเล็กน้อย ฉันอ่านเอกสารอย่างเป็นทางการซ้ำแล้วซ้ำเล่า แต่มักจะพบว่ามัน "หนาแน่น" เกินไปที่จะคาดคั้นเอาไว้และการค้นหาก็พบว่ามีการอภิปรายเกี่ยวกับคุณลักษณะหนึ่งหรืออย่างอื่นมากมาย แต่ฉันไม่พบสิ่งใดที่ให้ความกระจ่างในความแตกต่าง ข้อดีข้อเสียของแต่ละข้อ ดังนั้นควรใช้thenเมื่อใดและควรใช้เมื่อpipeใด ส่วนที่เพิ่มเข้าไป คำตอบที่ยอดเยี่ยมของเฟลิกซ์ช่วยชี้แจงว่าฟังก์ชันทั้งสองนี้แตกต่างกันอย่างไร แต่ฉันสงสัยว่ามีบางครั้งที่การทำงานthen()ของpipe(). เห็นได้ชัดว่าpipe()มีพลังมากกว่าthen()และดูเหมือนว่าอดีตสามารถทำอะไรก็ได้ที่คนหลังทำได้ เหตุผลหนึ่งที่ต้องใช้then()อาจเป็นเพราะชื่อนี้สะท้อนให้เห็นถึงบทบาทของมันในขณะที่การสิ้นสุดของสายการทำงานที่ประมวลผลข้อมูลเดียวกัน แต่มีกรณีการใช้งานที่ต้องthen()ส่งคืนต้นฉบับDeferredที่ไม่สามารถทำได้pipe()เนื่องจากส่งคืนใหม่Promiseหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.