คำถามติดแท็ก callback

การเรียกกลับเป็นส่วนหนึ่งของรหัส (เช่นที่อยู่หรือการอ้างอิงของฟังก์ชันหรือวิธีการหรือนิพจน์แลมบ์ดา) ที่ส่งผ่านเป็นอาร์กิวเมนต์ไปยังรหัสอื่นซึ่งคาดว่าจะเรียกกลับ (ดำเนินการ) อาร์กิวเมนต์ในเวลาที่สะดวก ควรใช้แท็กนี้กับคำถามเกี่ยวกับ API ที่ใช้การโทรกลับเพื่อแจ้งผู้โทรเมื่อการดำเนินการเสร็จสมบูรณ์ ใช้แท็กการจัดการเหตุการณ์สำหรับคำถามเกี่ยวกับการสมัครสมาชิกเหตุการณ์เช่นในกรอบงาน GUI

14
การโทรกลับหลังจากการโทรกลับแบบอะซิงโครนัสทั้งหมดเสร็จสมบูรณ์
ตามที่ชื่อแนะนำ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันต้องการโทรwhenAllDone()หลังจาก forEach-loop ผ่านแต่ละองค์ประกอบแล้วทำการประมวลผลแบบอะซิงโครนัส [1, 2, 3].forEach( function(item, index, array, done) { asyncFunction(item, function itemDone() { console.log(item + " done"); done(); }); }, function allDone() { console.log("All done"); whenAllDone(); } ); เป็นไปได้ไหมที่จะทำงานเช่นนี้? เมื่ออาร์กิวเมนต์ตัวที่สองสำหรับ forEach คือฟังก์ชันการเรียกกลับที่ทำงานเมื่อมันผ่านการวนซ้ำทั้งหมด? ผลลัพธ์ที่คาดหวัง: 3 done 1 done 2 done All done!

6
วิธีลบการเรียกกลับทั้งหมดจากตัวจัดการได้อย่างไร
ฉันมีHandlerจากกิจกรรมย่อยของฉันที่ถูกเรียกโดยหลักกิจกรรม ตัวจัดการนี้ถูกใช้โดยคลาสย่อยของpostDelayRunnables บางตัวและฉันไม่สามารถจัดการมันได้ ตอนนี้ในonStopเหตุการณ์ฉันต้องลบพวกเขาก่อนที่จะจบกิจกรรม (อย่างใดฉันเรียกว่าfinish()แต่มันยังคงโทรอีกครั้งและอีกครั้ง) มีอยู่แล้วเพื่อลบการเรียกกลับทั้งหมดจากตัวจัดการ

4
เมื่อใดจึงจะใช้ React setState callback
เมื่อสถานะองค์ประกอบของการตอบสนองเปลี่ยนแปลงวิธีการแสดงผลจะถูกเรียก ดังนั้นสำหรับการเปลี่ยนแปลงสถานะใด ๆ การดำเนินการสามารถทำได้ในร่างกายวิธีการแสดงผล มีกรณีการใช้งานเฉพาะสำหรับการโทรกลับ setState หรือไม่?

17
ฟังก์ชั่นการโทรกลับใน Java
มีวิธีการส่งผ่านฟังก์ชั่นโทรกลับในวิธีการจาวาหรือไม่? พฤติกรรมที่ฉันพยายามเลียนแบบคือ. Net Delegate ที่ถูกส่งผ่านไปยังฟังก์ชัน ฉันเคยเห็นผู้คนแนะนำให้สร้างวัตถุแยกต่างหาก แต่ดูเหมือนว่ามีราคาเกินจริง แต่ฉันรู้ว่าบางครั้งการเติมเต็มเป็นวิธีเดียวที่จะทำสิ่งต่าง ๆ

8
การกำหนดประเภทการโทรกลับ TypeScript
ฉันมีคลาสต่อไปนี้ใน TypeScript: class CallbackTest { public myCallback; public doWork(): void { //doing some work... this.myCallback(); //calling callback } } ฉันใช้คลาสเช่นนี้: var test = new CallbackTest(); test.myCallback = () => alert("done"); test.doWork(); รหัสทำงานได้ดังนั้นจึงแสดงกล่องข้อความตามที่คาดไว้ คำถามของฉันคือ: มีวิธีใดที่ฉันสามารถให้ข้อมูลชั้นเรียนของฉันmyCallback? ตอนนี้ฟิลด์สาธารณะmyCallbackเป็นประเภทanyที่แสดงด้านบน ฉันจะกำหนดลายเซ็นวิธีการโทรกลับได้อย่างไร หรือฉันจะตั้งค่าประเภทการโทรกลับบางประเภท? หรือฉันสามารถทำสิ่งเหล่านี้ได้หรือไม่ ฉันต้องใช้any(โดยนัย / ชัดเจน) หรือไม่ ฉันลองอะไรเช่นนี้ แต่มันไม่ทำงาน (ข้อผิดพลาดในการคอมไพล์เวลา): public myCallback: (); // or: …

8
ทำความเข้าใจเกี่ยวกับฟังก์ชั่นการโทรกลับใน JavaScript ได้ดีขึ้น
ฉันเข้าใจว่าการส่งผ่านฟังก์ชันหนึ่งไปยังฟังก์ชันอื่นเป็นการโทรกลับและเรียกใช้งานได้ แต่ฉันไม่เข้าใจการนำไปใช้ที่ดีที่สุด ฉันกำลังมองหาตัวอย่างพื้นฐานอย่างนี้: var myCallBackExample = { myFirstFunction : function( param1, param2, callback ) { // Do something with param1 and param2. if ( arguments.length == 3 ) { // Execute callback function. // What is the "best" way to do this? } }, mySecondFunction : function() { myFirstFunction( false, …

11
ตัวดำเนินการ Java: จะได้รับการแจ้งเตือนอย่างไรโดยไม่ต้องปิดกั้นเมื่องานเสร็จสมบูรณ์?
สมมติว่าฉันมีคิวงานเต็มไปหมดซึ่งฉันต้องส่งไปที่บริการปฏิบัติการ ฉันต้องการให้พวกเขาประมวลผลทีละรายการ วิธีที่ง่ายที่สุดที่ฉันคิดได้คือ: รับงานจากคิว ส่งไปยังผู้ดำเนินการ โทร. รับอนาคตที่ส่งคืนและบล็อกจนกว่าผลลัพธ์จะพร้อมใช้งาน รับภารกิจอื่นจากคิว ... อย่างไรก็ตามฉันพยายามหลีกเลี่ยงการบล็อกโดยสิ้นเชิง หากฉันมี 10,000 คิวดังกล่าวซึ่งจำเป็นต้องมีการประมวลผลทีละงานฉันจะไม่มีพื้นที่สแต็กเนื่องจากส่วนใหญ่จะยึดไว้กับเธรดที่ถูกบล็อก สิ่งที่ฉันต้องการคือส่งงานและให้การติดต่อกลับซึ่งจะเรียกว่าเมื่องานเสร็จสมบูรณ์ ฉันจะใช้การแจ้งเตือนการโทรกลับเป็นธงในการส่งงานต่อไป (เห็นได้ชัดว่า functionaljava และ jetlang ใช้อัลกอริทึมที่ไม่ปิดกั้นดังกล่าว แต่ฉันไม่เข้าใจรหัสของพวกเขา) ฉันจะทำเช่นนั้นได้อย่างไรโดยใช้ java.util.concurrent ของ JDK ซึ่งย่อมาจากบริการเรียกใช้งานของฉัน (คิวที่ให้อาหารฉันงานเหล่านี้เองอาจบล็อก แต่นั่นเป็นปัญหาที่ต้องแก้ไขในภายหลัง)

13
โทรกลับไปยังส่วนจาก DialogFragment
คำถาม: จะสร้างการติดต่อกลับจาก DialogFragment ไปยัง Fragment อื่นได้อย่างไร ในกรณีของฉันกิจกรรมที่เกี่ยวข้องควรไม่ทราบถึง DialogFragment อย่างสมบูรณ์ พิจารณาฉันมี public class MyFragment extends Fragment implements OnClickListener เมื่อถึงจุดหนึ่งฉันก็ทำได้ DialogFragment dialogFrag = MyDialogFragment.newInstance(this); dialogFrag.show(getFragmentManager, null); ที่ MyDialogFragment ดูเหมือนว่า protected OnClickListener listener; public static DialogFragment newInstance(OnClickListener listener) { DialogFragment fragment = new DialogFragment(); fragment.listener = listener; return fragment; } แต่ไม่มีการรับประกันว่าผู้ฟังจะอยู่รอบ ๆ ถ้า …

9
“ การติดต่อกลับ” ใน C คืออะไรและนำไปใช้อย่างไร
จากการอ่านที่ฉันทำไปแล้ว Core Audio ต้องอาศัยการเรียกกลับอย่างหนัก (และ C ++ แต่นั่นเป็นอีกเรื่องหนึ่ง) ฉันเข้าใจแนวคิด (เรียงลำดับ) ของการตั้งค่าฟังก์ชันที่เรียกใช้โดยฟังก์ชันอื่นซ้ำ ๆ เพื่อให้งานสำเร็จ ฉันไม่เข้าใจวิธีการตั้งค่าและวิธีการใช้งานจริง ตัวอย่างใด ๆ ที่จะได้รับการชื่นชม
153 c  callback 

7
ตรวจสอบว่ามีการเปลี่ยนแปลงคุณสมบัติอะไรบ้างใน Rails after_save callback?
ฉันตั้งค่าการโทรกลับ after_save ในผู้สังเกตการณ์แบบจำลองของฉันเพื่อส่งการแจ้งเตือนเฉพาะเมื่อแอตทริบิวต์ที่เผยแพร่ของโมเดลนั้นเปลี่ยนจาก false เป็น true ตั้งแต่วิธีการเช่นการเปลี่ยนแปลง? มีประโยชน์เฉพาะก่อนที่แบบจำลองจะได้รับการบันทึกวิธีที่ฉันกำลัง (และไม่สำเร็จ) ในขณะนี้ที่พยายามทำมีดังนี้: def before_save(blog) @og_published = blog.published? end def after_save(blog) if @og_published == false and blog.published? == true Notification.send(...) end end ไม่มีใครมีข้อเสนอแนะใด ๆ เกี่ยวกับวิธีที่ดีที่สุดในการจัดการสิ่งนี้โดยเฉพาะอย่างยิ่งการใช้ callbacks ผู้สังเกตการณ์แบบจำลอง (เพื่อไม่ให้เกิดมลภาวะรหัสควบคุม)

6
วิธีกำหนด Callbacks ใน Android
ในช่วงล่าสุดของ Google IO มีการนำเสนอเกี่ยวกับการใช้แอปพลิเคชันไคลเอนต์ที่สงบ น่าเสียดายที่มันเป็นการสนทนาระดับสูงโดยไม่มีซอร์สโค้ดของการใช้งาน ในแผนภาพนี้บนเส้นทางการส่งคืนมีการเรียกกลับที่แตกต่างหลากหลายไปยังวิธีการอื่น ฉันจะประกาศว่าวิธีการเหล่านี้เป็นอย่างไร ฉันเข้าใจแนวคิดของการโทรกลับ - รหัสชิ้นหนึ่งที่ถูกเรียกหลังจากเหตุการณ์บางอย่างเกิดขึ้น แต่ฉันไม่รู้วิธีใช้งาน วิธีเดียวที่ฉันใช้เรียกกลับจนถึงตอนนี้ได้เอาชนะวิธีการต่าง ๆ (ตัวอย่างเช่น onActivityResult) ฉันรู้สึกว่าฉันมีความเข้าใจพื้นฐานเกี่ยวกับรูปแบบการออกแบบ แต่ฉันก็ยังคงพัฒนาวิธีการจัดการเส้นทางกลับ
152 android  callback 

11
ฉันจะเรียก 3 ฟังก์ชั่นเพื่อดำเนินการหนึ่งฟังก์ชั่นได้อย่างไร?
ถ้าฉันต้องการเรียกฟังก์ชั่นนี้ทีละอัน $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); ฉันรู้ใน jQuery ฉันสามารถทำสิ่งที่ชอบ: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); แต่สมมติว่าฉันไม่ได้ใช้ jQuery และฉันต้องการโทร: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); ฉันควรจะเรียกใช้ฟังก์ชันนี้เพื่อดำเนินการsome_3secs_functionอย่างไรและหลังจากที่การโทรสิ้นสุดลงแล้วดำเนินการsome_5secs_functionและหลังการโทรสิ้นสุดลงแล้วโทรsome_8secs_function? UPDATE: สิ่งนี้ยังไม่ทำงาน: (function(callback){ $('#art1').animate({'width':'1000px'},1000); callback(); })((function(callback2){ $('#art2').animate({'width':'1000px'},1000); callback2(); })(function(){ $('#art3').animate({'width':'1000px'},1000); })); ภาพเคลื่อนไหวสามภาพเริ่มต้นในเวลาเดียวกัน ความผิดพลาดของฉันอยู่ที่ไหน


5
ฉันควรใช้ std :: function หรือ function pointer ใน C ++ หรือไม่
เมื่อใช้ฟังก์ชั่นการโทรกลับใน C ++ ฉันควรจะใช้ตัวชี้ฟังก์ชั่น C-style: void (*callbackFunc)(int); หรือฉันควรใช้ประโยชน์จากฟังก์ชั่น std :: std::function< void(int) > callbackFunc;
142 c++  function  c++11  callback  std 


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.