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

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

2
การดำเนินการ async Framework Entity ใช้เวลาสิบเท่าในการดำเนินการให้เสร็จสมบูรณ์
ฉันมีไซต์ MVC ที่ใช้ Entity Framework 6 เพื่อจัดการฐานข้อมูลและฉันได้ทำการทดลองกับการเปลี่ยนแปลงเพื่อให้ทุกอย่างทำงานเป็นตัวควบคุม async และการเรียกไปยังฐานข้อมูลนั้นจะทำงานเหมือน async counterparts (เช่น ToListAsync () แทน ToList ()) ปัญหาที่ฉันมีคือเพียงแค่เปลี่ยนการสืบค้นของฉันเป็น async ทำให้พวกเขาช้าอย่างไม่น่าเชื่อ รหัสต่อไปนี้จะได้รับการรวบรวมวัตถุ "Album" จากบริบทข้อมูลของฉันและถูกแปลเป็นฐานข้อมูลที่ค่อนข้างง่าย: // Get the albums var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync(); นี่คือ SQL ที่สร้างขึ้น: exec sp_executesql N'SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], …

13
วิธีการสื่อสารความแตกต่างระหว่างการเขียนโปรแกรมไม่ตรงกันและขนาน?
หลายแพลตฟอร์มส่งเสริมการทำงานแบบอะซิงโครนัสและการขนานซึ่งเป็นวิธีการปรับปรุงการตอบสนอง ฉันเข้าใจความแตกต่างโดยทั่วไป แต่มักจะพบว่ามันยากที่จะพูดออกมาในใจของฉันเองเช่นเดียวกับคนอื่น ๆ ฉันเป็นโปรแกรมเมอร์ทำงานและใช้ async & callbacks ค่อนข้างบ่อย ความเท่าเทียมนั้นให้ความรู้สึกแปลกใหม่ แต่ฉันรู้สึกว่าพวกเขาสับสนง่ายโดยเฉพาะในระดับการออกแบบภาษา จะรักคำอธิบายที่ชัดเจนว่าพวกเขาเกี่ยวข้อง (หรือไม่) และชั้นเรียนของโปรแกรมที่แต่ละโปรแกรมที่ดีที่สุด

8
การใช้ async componentDidMount () ดีหรือไม่?
การใช้componentDidMount()เป็นฟังก์ชัน async แนวปฏิบัติที่ดีใน React Native หรือฉันควรหลีกเลี่ยง ฉันต้องการข้อมูลบางอย่างจากAsyncStorageเวลาที่ส่วนประกอบติดตั้ง แต่วิธีเดียวที่ฉันรู้ว่าจะทำให้เป็นไปได้คือทำให้componentDidMount()ฟังก์ชันไม่ตรงกัน async componentDidMount() { let auth = await this.getAuth(); if (auth) this.checkAuth(auth); } มีปัญหาหรือไม่และมีวิธีแก้ไขปัญหาอื่น ๆ หรือไม่?

7
จะรอให้วิธีการ async เสร็จสมบูรณ์ได้อย่างไร
ฉันกำลังเขียนแอปพลิเคชัน WinForms ที่ถ่ายโอนข้อมูลไปยังอุปกรณ์ USB HID class ใบสมัครของฉันใช้ที่ดีเยี่ยม v6.0 ห้องสมุดทั่วไป HID ซึ่งสามารถพบได้ที่นี่ โดยสรุปเมื่อฉันต้องการเขียนข้อมูลไปยังอุปกรณ์นี่คือรหัสที่ถูกเรียก: private async void RequestToSendOutputReport(List<byte[]> byteArrays) { foreach (byte[] b in byteArrays) { while (condition) { // we'll typically execute this code many times until the condition is no longer met Task t = SendOutputReportViaInterruptTransfer(); await t; } // …

2
อะไรคือการไม่ปิดกั้นหรือ I / O ไม่ตรงกันใน Node.js?
ในบริบทของเอ็นจิ้นฝั่งเซิร์ฟเวอร์ Javascript สิ่งที่ไม่บล็อก I / O หรืออะซิงโครนัส I / O คืออะไร ฉันเห็นนี้ถูกกล่าวถึงว่าเป็นข้อได้เปรียบกว่าการใช้งานด้านเซิร์ฟเวอร์ Java

3
ทำความเข้าใจกับ Event Loop
ฉันกำลังคิดถึงมันและนี่คือสิ่งที่ฉันคิดขึ้นมา: ลองดูโค้ดด้านล่างนี้: console.clear(); console.log("a"); setTimeout(function(){console.log("b");},1000); console.log("c"); setTimeout(function(){console.log("d");},0); มีคำขอเข้ามาและเอ็นจิน JS เริ่มดำเนินการโค้ดด้านบนทีละขั้นตอน สองสายแรกคือสายซิงค์ แต่เมื่อพูดถึงsetTimeoutวิธีการมันจะกลายเป็นการดำเนินการแบบ async แต่ JS กลับมาจากมันทันทีและดำเนินการต่อซึ่งเรียกว่าNon-BlockingหรือAsync. และมันยังคงทำงานอื่น ๆ ผลลัพธ์ของการดำเนินการนี้มีดังต่อไปนี้: acdb โดยพื้นฐานแล้วครั้งที่สองsetTimeoutจะเสร็จสิ้นก่อนและฟังก์ชันเรียกกลับของมันจะถูกเรียกใช้งานเร็วกว่าฟังก์ชันแรกและนั่นก็สมเหตุสมผล เรากำลังพูดถึงแอปพลิเคชันเธรดเดียวที่นี่ JS Engine ยังคงดำเนินการสิ่งนี้ต่อไปและเว้นแต่ว่าจะเสร็จสิ้นคำขอแรกจะไม่ไปที่คำขอที่สอง แต่สิ่งที่ดีคือมันจะไม่รอให้การดำเนินการบล็อกเหมือนsetTimeoutจะแก้ไขดังนั้นมันจะเร็วกว่าเพราะยอมรับคำขอที่เข้ามาใหม่ แต่คำถามของฉันเกิดขึ้นจากรายการต่อไปนี้: # 1:หากเรากำลังพูดถึงแอปพลิเคชันแบบเธรดเดียวกลไกใดที่ประมวลผลsetTimeoutsในขณะที่เอ็นจิ้น JS ยอมรับคำขอเพิ่มเติมและดำเนินการ เธรดเดี่ยวทำงานต่อไปยังคำขออื่น ๆ อย่างไร สิ่งที่ใช้ได้ผลในsetTimeoutขณะที่คำขออื่นเข้ามาและดำเนินการ # 2:หากsetTimeoutฟังก์ชันเหล่านี้ถูกเรียกใช้งานเบื้องหลังในขณะที่มีคำขอเข้ามาและกำลังดำเนินการมากขึ้นสิ่งที่ดำเนินการประมวลผลแบบ async อยู่เบื้องหลัง? สิ่งที่เราพูดถึงนี้เรียกว่าEventLoopอะไร? # 3:แต่ไม่ควรใส่วิธีการทั้งหมดEventLoopเพื่อให้สิ่งทั้งหมดถูกดำเนินการและเรียกวิธีการโทรกลับ? นี่คือสิ่งที่ฉันเข้าใจเมื่อพูดถึงฟังก์ชันการโทรกลับ: function downloadFile(filePath, callback) { blah.downloadFile(filePath); callback(); } …

10
Asynchronous vs Multithreading - มีความแตกต่างหรือไม่?
การโทรแบบอะซิงโครนัสสร้างเธรดใหม่เสมอหรือไม่ อะไรคือความแตกต่างระหว่างทั้งสอง? การเรียกแบบอะซิงโครนัสสร้างหรือใช้เธรดใหม่เสมอหรือไม่ Wikipedia พูดว่า : ในการเขียนโปรแกรมคอมพิวเตอร์เหตุการณ์แบบอะซิงโครนัสคือเหตุการณ์ที่เกิดขึ้นโดยไม่ขึ้นกับผังรายการหลัก การดำเนินการแบบอะซิงโครนัสคือการดำเนินการในรูปแบบที่ไม่ปิดกั้นทำให้โฟลว์โปรแกรมหลักดำเนินการประมวลผลต่อไป ฉันรู้ว่าการโทรแบบ async สามารถทำได้ในเธรดเดียว? เป็นไปได้อย่างไร?

9
jQuery“ each ()” ฟังก์ชั่นซิงโครนัสหรือไม่
พิจารณาสถานการณ์นี้เพื่อตรวจสอบความถูกต้อง: function validateForm (validCallback) { $('#first-name').add($('#last-name')).add($('#address')).each(function () { // validating fields and adding 'invalid' class to invalid fields. }); // doing validation this way for almost 50 fields (loop over 50 fields) if ($('#holder .invalid').length == 0) { // submitting data here, only when all fields are validated. } } …

2
คุณใช้วิธีการมอบหมายการดำเนินการ async อย่างไร
ข้อมูลพื้นฐานเล็กน้อย ฉันกำลังเรียนรู้ Web API stack และฉันกำลังพยายามห่อหุ้มข้อมูลทั้งหมดในรูปแบบของออบเจ็กต์ "Result" ด้วยพารามิเตอร์เช่น Success และ ErrorCodes อย่างไรก็ตามวิธีการที่แตกต่างกันจะให้ผลลัพธ์และรหัสข้อผิดพลาดที่แตกต่างกัน แต่โดยทั่วไปวัตถุผลลัพธ์จะถูกสร้างอินสแตนซ์ในลักษณะเดียวกัน เพื่อประหยัดเวลาและเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถ async / await ใน C # ฉันพยายามที่จะรวมเนื้อหาวิธีการทั้งหมดของการกระทำเว็บ api ของฉันในตัวแทนการกระทำแบบอะซิงโครนัส แต่ติดอยู่ในอุปสรรคเล็กน้อย ... ให้ชั้นเรียนต่อไปนี้: public class Result { public bool Success { get; set; } public List<int> ErrorCodes{ get; set; } } public async Task<Result> GetResultAsync() { return …

5
async รองานส่งคืน
ใครสามารถอธิบายความหมายของวิธีการซิงโครนัสได้บ้าง ถ้าลองเปลี่ยนวิธีเป็นasyncVS ก็บ่นไปเลย ใช้งานได้: public Task MethodName() { return Task.FromResult<object>(null); } สิ่งนี้ใช้ไม่ได้: public async Task MethodName() { return Task.FromResult<object>(null); } โดยพื้นฐานแล้วฉันต้องการทราบว่านี่หมายถึงอะไร: Task.FromResult<object>(null);

3
async HttpClient จาก. Net 4.5 เป็นตัวเลือกที่ไม่ดีสำหรับแอปพลิเคชันที่มีภาระงานมากหรือไม่?
ฉันเพิ่งสร้างแอปพลิเคชันง่ายๆสำหรับทดสอบปริมาณงานการโทร HTTP ที่สามารถสร้างในลักษณะอะซิงโครนัสเทียบกับวิธีการแบบมัลติเธรดแบบเดิม แอปพลิเคชันสามารถทำการโทร HTTP ตามจำนวนที่กำหนดไว้ล่วงหน้าและในตอนท้ายจะแสดงเวลาทั้งหมดที่จำเป็นในการดำเนินการ ในระหว่างการทดสอบของฉันมีการเรียก HTTP ทั้งหมดไปยังเซิร์ฟเวอร์ IIS ในเครื่องของฉันและพวกเขาดึงไฟล์ข้อความขนาดเล็ก (ขนาด 12 ไบต์) ส่วนที่สำคัญที่สุดของโค้ดสำหรับการใช้งานแบบอะซิงโครนัสแสดงอยู่ด้านล่าง: public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try …

5
วิธีใช้ jQuery ในส่วนขยาย Chrome
ฉันกำลังเขียนนามสกุลโครเมี่ยม และฉันต้องการใช้jQueryในส่วนขยายของฉัน ฉันไม่ได้ใช้พื้นหลังหน้าเพียงแค่พื้นหลังสคริปต์ นี่คือไฟล์ของฉัน: manifest.json { "manifest_version": 2, "name": "Extension name", "description": "This extension does something,", "version": "0.1", "permissions": [ "activeTab" ], "browser_action": { "default_icon": "images/icon_128.png" }, "background": { "scripts": ["background.js"], "persistent": false }, "icons": { "16": "images/icon_16.png", "48": "images/icon_48.png", "128": "images/icon_128.png" } } ของฉัน background.jsไฟล์เพิ่งเรียกใช้ไฟล์อื่นชื่อwork.js // Respond to the …

4
อะไรคือความแตกต่างระหว่างการคืนค่าว่างเปล่าและการส่งคืนงาน?
ในการมองในหลาย ๆ ตัวอย่าง C # Async CTP ผมเห็นบาง async หน้าที่ว่าการกลับมาvoidและคนอื่น ๆ Taskที่ส่งกลับไม่ใช่ทั่วไป ฉันเห็นว่าเหตุใดการส่งคืน a Task<MyType>จึงมีประโยชน์ในการส่งคืนข้อมูลไปยังผู้โทรเมื่อการดำเนินการ async เสร็จสิ้น แต่ฟังก์ชันที่ฉันเห็นว่ามีประเภทการTaskส่งคืนไม่ส่งคืนข้อมูลใด ๆ ทำไมไม่กลับvoidล่ะ

12
วิธีการเรียกใช้เมธอดแบบอะซิงโครนัสใน Java
เมื่อเร็ว ๆ นี้ฉันได้ดู goroutines ของ Goและคิดว่าคงจะดีถ้ามีอะไรที่คล้ายกันใน Java เท่าที่ฉันได้ค้นหาวิธีทั่วไปในการขนานการเรียกเมธอดคือทำสิ่งต่างๆเช่น: final String x = "somethingelse"; new Thread(new Runnable() { public void run() { x.matches("something"); } }).start(); นั่นไม่สง่างามมาก มีวิธีที่ดีกว่านี้หรือไม่? ฉันต้องการโซลูชันดังกล่าวในโปรเจ็กต์ดังนั้นฉันจึงตัดสินใจใช้คลาส wrapper ของฉันเองโดยใช้การเรียกเมธอด async ฉันตีพิมพ์ระดับกระดาษห่อของฉันในJ-Go แต่ฉันไม่รู้ว่ามันเป็นทางออกที่ดีหรือเปล่า การใช้งานนั้นง่ายมาก: SampleClass obj = ... FutureResult<Integer> res = ... Go go = new Go(obj); go.callLater(res, "intReturningMethod", 10); //10 …

6
ทำไมฉันถึงโยนเข้าไปในตัวจัดการ Promise.catch ไม่ได้?
เหตุใดฉันจึงไม่สามารถโยนการErrorเรียกกลับที่จับได้และปล่อยให้กระบวนการจัดการกับข้อผิดพลาดราวกับว่ามันอยู่ในขอบเขตอื่น ๆ ถ้าฉันไม่ทำconsole.log(err)อะไรจะถูกพิมพ์ออกมาและฉันก็ไม่รู้ว่าเกิดอะไรขึ้น กระบวนการก็จบลง ... ตัวอย่าง: function do1() { return new Promise(function(resolve, reject) { throw new Error('do1'); setTimeout(resolve, 1000) }); } function do2() { return new Promise(function(resolve, reject) { setTimeout(function() { reject(new Error('do2')); }, 1000) }); } do1().then(do2).catch(function(err) { //console.log(err.stack); // This is the only way to see the stack …

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