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

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

8
รอจนกว่าการวนซ้ำอย่างรวดเร็วด้วยการร้องขอเครือข่ายแบบอะซิงโครนัสเสร็จสิ้นการดำเนินการ
ฉันต้องการสำหรับ in ในการส่งเครือข่ายจำนวนมากขอไปยังฐานข้อมูลแล้วส่งข้อมูลไปยังตัวควบคุมมุมมองใหม่เมื่อวิธีการเสร็จสิ้นการดำเนินการ นี่คือรหัสของฉัน: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] = snapshot.value }) } // Segue to new view controller here and pass datesArray once it is complete ฉันมีข้อกังวลสองสามข้อ ก่อนอื่นฉันจะรอจนกว่าการวนซ้ำจะเสร็จสิ้นและคำขอเครือข่ายทั้งหมดเสร็จสมบูรณ์ได้อย่างไร ฉันไม่สามารถแก้ไขฟังก์ชัน observSingleEventOfType มันเป็นส่วนหนึ่งของ …

6
ทำการดำเนินการแบบอะซิงโครนัสใน ASP.NET MVC ใช้เธรดจาก ThreadPool บน. NET 4
หลังจากคำถามนี้ทำให้ฉันรู้สึกสบายใจเมื่อใช้การดำเนินการ async ใน ASP.NET MVC ดังนั้นฉันจึงเขียนบล็อกโพสต์สองข้อความว่า: การเขียนโปรแกรมแบบอะซิงโครนัสตามงานของฉันใน C # 5.0 และ ASP.NET MVC Web Applications การเรียกฐานข้อมูลแบบอะซิงโครนัสด้วยรูปแบบการเขียนโปรแกรมแบบอะซิงโครนัส (TAP) ใน ASP.NET MVC 4 ฉันมีความเข้าใจผิดในใจเกี่ยวกับการทำงานแบบอะซิงโครนัสบน ASP.NET MVC มากเกินไป ฉันมักจะได้ยินประโยคนี้: แอปพลิเคชันสามารถปรับขนาดได้ดีขึ้นหากการดำเนินการแบบอะซิงโครนัส และฉันก็ได้ยินประโยคแบบนี้มากมายเช่นกัน: ถ้าคุณมีปริมาณการใช้ข้อมูลจำนวนมากคุณอาจจะดีกว่าถ้าคุณไม่ตอบแบบสอบถามแบบอะซิงโครนัสโดยใช้เธรดพิเศษ 2 เธรดในการให้บริการหนึ่งคำขอ ฉันคิดว่าทั้งสองประโยคนั้นไม่สอดคล้องกัน ฉันไม่มีข้อมูลมากนักเกี่ยวกับการทำงานของ threadpool บน ASP.NET แต่ฉันรู้ว่า threadpool นั้นมีขนาดที่ จำกัด สำหรับเธรด ดังนั้นประโยคที่สองจะต้องเกี่ยวข้องกับปัญหานี้ และฉันต้องการทราบว่าการดำเนินการแบบอะซิงโครนัสใน ASP.NET MVC ใช้เธรดจาก ThreadPool บน. NET 4 …

16
การโทร jdbc แบบอะซิงโครนัสเป็นไปได้หรือไม่?
ฉันสงสัยว่ามีวิธีการโทรแบบอะซิงโครนัสกับฐานข้อมูลหรือไม่? ตัวอย่างเช่นลองนึกภาพว่าฉันมีคำขอใหญ่ ๆ ที่ต้องใช้เวลานานในการประมวลผลฉันต้องการส่งคำขอและรับการแจ้งเตือนเมื่อคำขอนั้นส่งคืนค่า (โดยส่งผู้ฟัง / ติดต่อกลับหรือบางอย่าง) ฉันไม่ต้องการบล็อครอให้ฐานข้อมูลตอบ ฉันไม่คิดว่าการใช้กลุ่มของเธรดเป็นวิธีแก้ปัญหาเพราะมันไม่ได้ปรับขนาดในกรณีที่มีการร้องขอที่เกิดขึ้นพร้อมกันจำนวนมากสิ่งนี้จะทำให้เกิดเธรดจำนวนมาก เรากำลังประสบปัญหานี้กับเซิร์ฟเวอร์เครือข่ายและเราพบวิธีแก้ปัญหาโดยใช้การเรียกระบบเลือก / แบบสำรวจ / epoll เพื่อหลีกเลี่ยงการมีหนึ่งเธรดต่อการเชื่อมต่อ ฉันแค่สงสัยว่าจะมีคุณสมบัติที่คล้ายกับคำขอฐานข้อมูลได้อย่างไร หมายเหตุ: ฉันทราบว่าการใช้ FixedThreadPool อาจเป็นการแก้ไขที่ดี แต่ฉันประหลาดใจที่ไม่มีใครพัฒนาระบบแบบอะซิงโครนัสจริงๆ (โดยไม่ต้องใช้เธรดพิเศษ) ** ปรับปรุง ** เพราะการขาดของการแก้ปัญหาในทางปฏิบัติจริงที่ฉันตัดสินใจที่จะสร้างห้องสมุด (ส่วนหนึ่งของ finagle) ตัวเอง: finagle-MySQL โดยทั่วไปจะทำการถอดรหัส / ถอดรหัสการร้องขอ / ตอบกลับ mysql และใช้ Finagle / Netty ภายใต้ประทุน มันปรับขนาดได้อย่างดีเยี่ยมแม้จะมีการเชื่อมต่อจำนวนมาก

23
วิธีหลีกเลี่ยงการซ้อนฟังก์ชันที่ไม่ตรงกันใน Node.js
ฉันต้องการสร้างหน้าเว็บที่แสดงข้อมูลบางส่วนจากฐานข้อมูลดังนั้นฉันได้สร้างฟังก์ชั่นบางอย่างที่ได้รับข้อมูลนั้นจากฐานข้อมูลของฉัน ฉันเป็นแค่มือใหม่ใน Node.js ดังนั้นเท่าที่ฉันเข้าใจถ้าฉันต้องการใช้พวกเขาทั้งหมดในหน้าเดียว (การตอบสนอง HTTP) ฉันต้องรังพวกเขาทั้งหมด: http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); var html = "<h1>Demo page</h1>"; getSomeDate(client, function(someData) { html += "<p>"+ someData +"</p>"; getSomeOtherDate(client, function(someOtherData) { html += "<p>"+ someOtherData +"</p>"; getMoreData(client, function(moreData) { html += "<p>"+ moreData +"</p>"; res.write(html); res.end(); }); }); }); หากมีฟังก์ชั่นมากมายเช่นนั้นแล้วการทำรังกลายเป็นปัญหา มีวิธีหลีกเลี่ยงสิ่งนี้หรือไม่? …

7
ใช้ C # Generic Timeout
ฉันกำลังมองหาความคิดที่ดีสำหรับการนำวิธีการทั่วไปไปใช้ในการเรียกใช้โค้ด (หรือผู้รับมอบสิทธิ์นิรนาม) บรรทัดเดียวด้วยการหมดเวลา TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min ฉันกำลังมองหาโซลูชันที่สามารถนำไปใช้อย่างหรูหราในหลาย ๆ ที่ที่โค้ดของฉันโต้ตอบกับโค้ดเจ้าอารมณ์ (ที่ฉันไม่สามารถเปลี่ยนแปลงได้) นอกจากนี้ฉันต้องการให้โค้ด "หมดเวลา" ที่ละเมิดมีการหยุดการทำงานเพิ่มเติมหากเป็นไปได้


6
อะไรคือความแตกต่างระหว่างการเปิดตัว / เข้าร่วมและ async / ที่รอใน Kotlin coroutines
ในkotlinx.coroutinesไลบรารีคุณสามารถเริ่ม coroutine ใหม่โดยใช้launch(กับjoin) หรือasync(พร้อมawait) ความแตกต่างระหว่างพวกเขาคืออะไร?

6
รอวิธีการ void async
ฉันจะรอให้void asyncวิธีการทำงานให้เสร็จได้อย่างไร ตัวอย่างเช่นฉันมีฟังก์ชั่นด้านล่าง: async void LoadBlahBlah() { await blah(); ... } ตอนนี้ฉันต้องการให้แน่ใจว่าทุกอย่างถูกโหลดก่อนดำเนินการต่อที่อื่น
155 c#  asynchronous 

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); })); ภาพเคลื่อนไหวสามภาพเริ่มต้นในเวลาเดียวกัน ความผิดพลาดของฉันอยู่ที่ไหน

17
ตอบสนอง - แสดงหน้าจอโหลดขณะที่ DOM กำลังเรนเดอร์?
นี่คือตัวอย่างจากหน้าแอปพลิเคชัน Google Adsense หน้าจอโหลดปรากฏขึ้นก่อนหน้าหลักแสดงให้เห็นหลังจาก ฉันไม่ทราบวิธีการทำสิ่งเดียวกันกับ React เพราะถ้าฉันทำการโหลดหน้าจอที่เรนเดอร์ด้วยองค์ประกอบ React มันจะไม่แสดงในขณะที่หน้ากำลังโหลดเพราะมันต้องรอ DOM ที่เรนเดอร์มาก่อน อัปเดต : ฉันทำตัวอย่างของวิธีการของฉันโดยใส่ตัวโหลดหน้าจอindex.htmlและลบออกในcomponentDidMount()วิธีวงจรชีวิตของReact ตัวอย่างและการตอบสนองในการโหลดหน้าจอ

7
พารามิเตอร์หลักของ Node.js package.json
ฉันได้ทำการค้นหาค่อนข้างเรียบร้อยแล้ว อย่างไรก็ตามยังคงมีข้อสงสัยเกี่ยวกับพารามิเตอร์หลักใน package.json ของ Node.js การเติมลงในฟิลด์นี้จะช่วยได้อย่างไร ถามอีกวิธีหนึ่งฉันสามารถเริ่มโมดูลในสไตล์ที่แตกต่างได้ไหมถ้าฟิลด์นี้นำเสนอ? ฉันสามารถเติมสคริปต์มากกว่าหนึ่งตัวในพารามิเตอร์หลักได้หรือไม่ ถ้าใช่พวกเขาจะเริ่มเป็นสองหัวข้อหรือไม่? ถ้าไม่ฉันจะเริ่มสองสคริปต์ในโมดูลและให้พวกเขาทำงานในแบบคู่ขนานได้อย่างไร ฉันรู้ว่าคำถามที่สองค่อนข้างแปลก เป็นเพราะฉันได้โฮสต์แอปพลิเคชั่น Node.js บน OpenShift แต่แอปพลิเคชันประกอบด้วยสององค์ประกอบหลัก หนึ่งเป็น REST API และอีกหนึ่งเป็นบริการส่งการแจ้งเตือน ฉันกลัวว่ากระบวนการส่งการแจ้งเตือนจะบล็อก REST API หากมีการใช้งานเป็นเธรดเดียว อย่างไรก็ตามพวกเขาต้องเชื่อมต่อกับคาร์ทริดจ์ MongoDB เดียวกัน ยิ่งกว่านั้นฉันต้องการประหยัดหนึ่งเกียร์หากทั้งสององค์ประกอบสามารถให้บริการในเกียร์เดียวกันได้ถ้าเป็นไปได้ ข้อเสนอแนะใด ๆ ยินดีต้อนรับ

15
เรียกใช้งาน PHP แบบอะซิงโครนัส
ฉันทำงานกับเว็บแอปพลิเคชันที่ค่อนข้างใหญ่และแบ็กเอนด์ส่วนใหญ่เป็น PHP มีหลายที่ในรหัสที่ฉันต้องทำงานให้เสร็จ แต่ฉันไม่ต้องการให้ผู้ใช้รอผลลัพธ์ ตัวอย่างเช่นเมื่อสร้างบัญชีใหม่ฉันต้องส่งอีเมลต้อนรับให้พวกเขา แต่เมื่อพวกเขากดปุ่ม 'เสร็จสิ้นการลงทะเบียน' ฉันไม่ต้องการให้รอจนกว่าอีเมลจะถูกส่งจริงฉันแค่ต้องการเริ่มต้นกระบวนการและส่งข้อความกลับไปยังผู้ใช้ทันที จนถึงตอนนี้ในบางแห่งฉันใช้สิ่งที่รู้สึกเหมือนแฮ็คกับ exec () โดยทั่วไปการทำสิ่งต่าง ๆ เช่น: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); ซึ่งดูเหมือนจะใช้งานได้ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ ฉันกำลังพิจารณาที่จะเขียนระบบที่จัดคิวงานในตาราง MySQL และสคริปต์ PHP ที่ใช้งานมานานแยกต่างหากซึ่งจะสืบค้นตารางนั้นหนึ่งวินาทีและดำเนินงานใหม่ ๆ ที่พบ สิ่งนี้จะมีประโยชน์ในการให้ฉันแบ่งงานระหว่างเครื่องจักรของคนงานหลายคนในอนาคตถ้าฉันต้องการ ฉันกำลังคิดค้นวงล้ออีกครั้งหรือไม่? มีวิธีแก้ปัญหาที่ดีกว่าแฮ็ค exec () หรือคิว MySQL หรือไม่?

12
ฉันจะสร้างฟังก์ชั่นอะซิงโครนัสใน Javascript ได้อย่างไร
ลองดูรหัสนี้: <a href="#" id="link">Link</a> <span>Moving</span> $('#link').click(function () { console.log("Enter"); $('#link').animate({ width: 200 }, 2000, function() { console.log("finished"); }); console.log("Exit"); }); อย่างที่คุณเห็นในคอนโซลฟังก์ชั่น "animate" นั้นเป็นแบบอะซิงโครนัสและเป็น "การไหล" ของโค้ดบล็อกตัวจัดการเหตุการณ์ ในความเป็นจริง : $('#link').click(function () { console.log("Enter"); asyncFunct(); console.log("Exit"); }); function asyncFunct() { console.log("finished"); } ติดตามการไหลของรหัสบล็อก! หากฉันต้องการสร้างfunction asyncFunct() { }ด้วยพฤติกรรมนี้ฉันจะใช้ javascript / jquery ได้อย่างไร ผมคิดว่ามีกลยุทธ์โดยไม่ต้องใช้ที่ setTimeout()

12
คำขอแบบอะซิงโครนัสกับคำขอ Python
ฉันลองตัวอย่างที่ให้ไว้ในเอกสารประกอบของไลบรารีคำขอสำหรับหลาม ด้วยasync.map(rs)ฉันได้รับรหัสตอบกลับ แต่ฉันต้องการรับเนื้อหาของแต่ละหน้าที่ร้องขอ เช่นนี้ไม่ทำงาน: out = async.map(rs) print out[0].content

17
jasmine: Async callback ไม่ได้ถูกเรียกใช้ภายในระยะเวลาที่กำหนดโดย jasmine.DEFAULT_TIMEOUT_INTERVAL
ฉันมีบริการเชิงมุมที่เรียกว่าrequestNotificationChannel: app.factory("requestNotificationChannel", function($rootScope) { var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_"; function deleteMessage(id, index) { $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index }); }; return { deleteMessage: deleteMessage }; }); ฉันพยายามทดสอบบริการโดยใช้ดอกมะลิ: "use strict"; describe("Request Notification Channel", function() { var requestNotificationChannel, rootScope, scope; beforeEach(function(_requestNotificationChannel_) { module("messageAppModule"); inject(function($injector, _requestNotificationChannel_) { rootScope = $injector.get("$rootScope"); scope = rootScope.$new(); …

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