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

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

11
วิธีการเข้าถึง "นี่" ที่ถูกต้องในการติดต่อกลับ?
ฉันมีฟังก์ชั่นการสร้างที่ลงทะเบียนจัดการเหตุการณ์: function MyConstructor(data, transport) { this.data = data; transport.on('data', function () { alert(this.data); }); } // Mock transport object var transport = { on: function(event, callback) { setTimeout(callback, 1000); } }; // called as var obj = new MyConstructor('foo', transport); เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล อย่างไรก็ตามฉันไม่สามารถเข้าถึงdataคุณสมบัติของวัตถุที่สร้างขึ้นภายในการติดต่อกลับ ดูเหมือนthisว่าไม่ได้อ้างถึงวัตถุที่สร้างขึ้น แต่เป็นวัตถุอื่น ฉันยังพยายามใช้วิธีวัตถุแทนฟังก์ชั่นที่ไม่ระบุชื่อ: function MyConstructor(data, transport) { this.data …
1425 javascript  callback  this 

28
ฉันจะส่งพารามิเตอร์ไปยังการเรียกกลับ setTimeout () ได้อย่างไร
ฉันมีรหัสจาวาสคริปต์ที่มีลักษณะดังนี้: function statechangedPostQuestion() { //alert("statechangedPostQuestion"); if (xmlhttp.readyState==4) { var topicId = xmlhttp.responseText; setTimeout("postinsql(topicId)",4000); } } function postinsql(topicId) { //alert(topicId); } ฉันได้รับข้อผิดพลาดที่topicIdไม่ได้กำหนดทุกอย่างทำงานก่อนที่ฉันจะใช้setTimeout()ฟังก์ชั่น ฉันต้องการให้postinsql(topicId)ฟังก์ชันของฉันถูกเรียกหลังจากเวลาผ่านไปครู่หนึ่ง ฉันควรทำอย่างไรดี?


19
ฉันจะแปลง API การเรียกกลับที่มีอยู่เป็นสัญญาได้อย่างไร
ฉันต้องการทำงานกับคำสัญญา แต่ฉันมี callback API ในรูปแบบดังนี้: 1. โหลด DOM หรือเหตุการณ์ครั้งเดียวอื่น ๆ : window.onload; // set to callback ... window.onload = function() { }; 2. โทรกลับธรรมดา: function request(onChangeHandler) { ... } request(function() { // change happened ... }); 3. การเรียกกลับสไตล์โหนด ("nodeback"): function getStuff(dat, callback) { ... } getStuff("dataParam", function(err, data) { ... …


10
ไม่ได้สัญญาไว้เพียงแค่โทรกลับ
ฉันพัฒนา JavaScript มาหลายปีแล้วและฉันก็ไม่เข้าใจว่าสัญญาจะเกิดอะไรขึ้น ดูเหมือนว่าทั้งหมดที่ฉันทำคือการเปลี่ยนแปลง: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); ซึ่งฉันสามารถใช้ห้องสมุดเช่นasyncสำหรับต่อไปกับสิ่งที่ชอบ api().then(function(result){ api2().then(function(result2){ api3().then(function(result3){ // do work }); }); }); รหัสไหนมากกว่าและอ่านได้น้อยกว่า ฉันไม่ได้อะไรเลยนี่มันไม่ได้ 'แบน' อย่างน่าอัศจรรย์ ไม่ต้องพูดถึงต้องเปลี่ยนสิ่งต่าง ๆ เพื่อสัญญา ดังนั้นเอะอะใหญ่เกี่ยวกับสัญญาที่นี่คืออะไร?

5
ความแตกต่างระหว่าง array_map, array_walk และ array_filter
ว่าอะไรคือความแตกต่างระหว่างarray_map, และarray_walk array_filterสิ่งที่ฉันเห็นได้จากเอกสารคือคุณสามารถส่งผ่านฟังก์ชันการโทรกลับเพื่อดำเนินการกับอาร์เรย์ที่ให้มา แต่ฉันไม่พบความแตกต่างระหว่างพวกเขา พวกเขาทำสิ่งเดียวกันหรือไม่? พวกเขาสามารถใช้แทนกันได้? ฉันขอขอบคุณที่คุณช่วยเป็นตัวอย่างให้กับพวกเขาหากพวกเขาแตกต่างกัน
373 php  arrays  callback 

30
จะอธิบายการโทรกลับเป็นภาษาอังกฤษธรรมดาได้อย่างไร พวกเขาแตกต่างจากการเรียกฟังก์ชั่นหนึ่งจากฟังก์ชั่นอื่นหรือไม่?
จะอธิบายการโทรกลับเป็นภาษาอังกฤษธรรมดาได้อย่างไร พวกเขาแตกต่างจากการเรียกฟังก์ชั่นหนึ่งจากฟังก์ชั่นอื่นที่รับบริบทบางอย่างจากฟังก์ชั่นการโทรได้อย่างไร? พลังของพวกเขาจะถูกอธิบายต่อโปรแกรมเมอร์มือใหม่ได้อย่างไร?


13
JavaScript: การส่งพารามิเตอร์ไปยังฟังก์ชันเรียกกลับ
ฉันกำลังพยายามส่งพารามิเตอร์บางอย่างไปยังฟังก์ชันที่ใช้เป็นการโทรกลับฉันจะทำเช่นนั้นได้อย่างไร function tryMe (param1, param2) { alert (param1 + " and " + param2); } function callbackTester (callback, param1, param2) { callback (param1, param2); } callbackTester (tryMe, "hello", "goodbye");

10
วิธีทำให้ฟังก์ชั่นรอจนกระทั่งมีการโทรกลับโดยใช้ node.js
ฉันมีฟังก์ชั่นง่าย ๆ ที่มีลักษณะดังนี้: function(query) { myApi.exec('SomeCommand', function(response) { return response; }); } โดยทั่วไปฉันต้องการให้โทรmyApi.execและกลับคำตอบที่ได้รับในแลมบ์ดาโทรกลับ อย่างไรก็ตามรหัสข้างต้นใช้งานไม่ได้และจะส่งคืนทันที เพียงเพื่อความพยายามแฮ็คมากฉันลองด้านล่างซึ่งไม่ได้ผล แต่อย่างน้อยคุณก็เข้าใจว่าฉันพยายามทำอะไรให้สำเร็จ: function(query) { var r; myApi.exec('SomeCommand', function(response) { r = response; }); while (!r) {} return r; } โดยทั่วไปแล้วอะไรคือ 'node.js / event driven' ทางที่ดีในการดำเนินเรื่องนี้ ฉันต้องการให้ฟังก์ชั่นของฉันรอจนกว่าจะได้รับการติดต่อกลับแล้วส่งกลับค่าที่ส่งไปให้

11
จุดประสงค์ของ willSet และ didSet ใน Swift คืออะไร?
Swift มีไวยากรณ์การประกาศคุณสมบัติที่คล้ายกับ C #: var foo: Int { get { return getFoo() } set { setFoo(newValue) } } อย่างไรก็ตามมันยังมีwillSetและdidSetการกระทำ สิ่งเหล่านี้ถูกเรียกก่อนและหลังตัวเรียกถูกตั้งค่าตามลำดับ จุดประสงค์ของพวกเขาคืออะไรโดยพิจารณาว่าคุณสามารถมีรหัสเดียวกันภายในตัวตั้งค่าได้

14
jQuery ส่งพารามิเตอร์เพิ่มเติมไปที่ callback
มีวิธีการส่งผ่านข้อมูลมากขึ้นในฟังก์ชั่นการโทรกลับใน jQuery หรือไม่? ฉันมีสองฟังก์ชั่นและฉันต้องการให้โทรกลับไปที่$.postตัวอย่างเช่นเพื่อส่งผ่านทั้งข้อมูลผลลัพธ์ของการโทร AJAX เช่นเดียวกับข้อโต้แย้งที่กำหนดเองบางอย่าง function clicked() { var myDiv = $("#my-div"); // ERROR: Says data not defined $.post("someurl.php",someData,doSomething(data, myDiv),"json"); // ERROR: Would pass in myDiv as curData (wrong) $.post("someurl.php",someData,doSomething(data, myDiv),"json"); } function doSomething(curData, curDiv) { } ฉันต้องการส่งผ่านพารามิเตอร์ของตัวเองไปยังการโทรกลับรวมถึงผลลัพธ์ที่ได้จากการโทร AJAX

11
Rails: update_attribute เทียบกับ update_attributes
Object.update_attribute(:only_one_field, "Some Value") Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3") ทั้งสองอย่างนี้จะอัปเดตวัตถุโดยไม่ต้องแจ้งให้ AR ทราบเพื่ออัปเดตอย่างชัดเจน Rails API พูดว่า: สำหรับ update_attribute อัพเดตแอททริบิวต์เดียวและบันทึกข้อมูลโดยไม่ต้องผ่านขั้นตอนการตรวจสอบความถูกต้องตามปกติ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับแฟล็กบูลีนในระเบียนที่มีอยู่ เมธอด update_attribute ปกติในฐานจะถูกแทนที่ด้วยสิ่งนี้เมื่อโมดูลการตรวจสอบความถูกต้องถูกผสมซึ่งเป็นค่าเริ่มต้น สำหรับ update_attributes อัปเดตคุณลักษณะทั้งหมดจาก Hash ที่ส่งผ่านและบันทึกบันทึก หากวัตถุไม่ถูกต้องการบันทึกจะล้มเหลวและจะส่งคืนค่าเท็จ ดังนั้นหากฉันไม่ต้องการให้วัตถุตรวจสอบความถูกต้องฉันควรใช้ update_attribute จะเกิดอะไรขึ้นถ้าฉันมีการอัปเดตนี้ก่อนวันที่บันทึกมันจะสแต็คโอเวอร์โฟลว์หรือไม่ คำถามของฉันคือ update_attribute ยังข้ามก่อนบันทึกหรือเพียงแค่การตรวจสอบ นอกจากนี้ไวยากรณ์ที่ถูกต้องคืออะไรที่จะผ่านแฮชเพื่อ update_attributes ... ลองดูตัวอย่างของฉันที่ด้านบน

5
ผ่านบริบท“ นี่” ที่ถูกต้องไปยัง setTimeout callback หรือไม่
ฉันจะส่งผ่านบริบทได้setTimeoutอย่างไร ฉันต้องการโทรthis.tip.destroy()ถ้าเกินthis.options.destroyOnHide1,000 มิลลิวินาที ฉันจะทำสิ่งนั้นได้อย่างไร if (this.options.destroyOnHide) { setTimeout(function() { this.tip.destroy() }, 1000); } เมื่อฉันลองด้านบนthisหมายถึงหน้าต่าง

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