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

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

4
ทำไม. json () ถึงคืนคำสัญญา?
fetch()เมื่อเร็ว ๆ นี้ฉันยุ่งกับapi และสังเกตเห็นบางอย่างที่แปลกไปหน่อย let url = "http://jsonplaceholder.typicode.com/posts/6"; let iterator = fetch(url); iterator .then(response => { return { data: response.json(), status: response.status } }) .then(post => document.write(post.data)); ; post.dataส่งคืนPromiseวัตถุ http://jsbin.com/wofulo/2/edit?js,output อย่างไรก็ตามหากเขียนเป็น: let url = "http://jsonplaceholder.typicode.com/posts/6"; let iterator = fetch(url); iterator .then(response => response.json()) .then(post => document.write(post.title)); ; postนี่คือมาตรฐานObjectที่คุณสามารถเข้าถึงแอตทริบิวต์หัวเรื่อง http://jsbin.com/wofulo/edit?js,output ดังนั้นคำถามของฉันคือทำไมresponse.jsonส่งคืนคำสัญญาในตัวอักษรของวัตถุ …

2
Task <int> กลายเป็น int ได้อย่างไร?
เรามีวิธีนี้: async Task&lt;int&gt; AccessTheWebAsync() { HttpClient client = new HttpClient(); Task&lt;string&gt; getStringTask = client.GetStringAsync("http://msdn.microsoft.com"); // You can do work here that doesn't rely on the string from GetStringAsync. DoIndependentWork(); string urlContents = await getStringTask; //The thing is that this returns an int to a method that has a return type …

6
รันงาน async สองงานพร้อมกันและรวบรวมผลลัพธ์ใน. NET 4.5
ฉันพยายามมาระยะหนึ่งแล้วเพื่อหาสิ่งที่ฉันคิดว่าจะใช้งานได้ง่ายกับ. NET 4.5 ฉันต้องการปิดงานสองงานที่ทำงานเป็นเวลานานในเวลาเดียวกันและรวบรวม ผลลัพธ์ด้วยวิธี C # 4.5 (RTM) ที่ดีที่สุด ต่อไปนี้ใช้งานได้ แต่ฉันไม่ชอบเพราะ: ฉันต้องการSleepเป็นวิธี async เพื่อให้สามารถใช้awaitวิธีอื่นได้ มันดูเงอะงะด้วย Task.Run() ฉันไม่คิดว่านี่เป็นการใช้คุณสมบัติภาษาใหม่ ๆ เลยด้วยซ้ำ! รหัสการทำงาน: public static void Go() { Console.WriteLine("Starting"); var task1 = Task.Run(() =&gt; Sleep(5000)); var task2 = Task.Run(() =&gt; Sleep(3000)); int totalSlept = task1.Result + task2.Result; Console.WriteLine("Slept for a total of …


13
จะ จำกัด ปริมาณการดำเนินการ async I / O พร้อมกันได้อย่างไร?
// let's say there is a list of 1000+ URLs string[] urls = { "http://google.com", "http://yahoo.com", ... }; // now let's send HTTP requests to each of these URLs in parallel urls.AsParallel().ForAll(async (url) =&gt; { var client = new HttpClient(); var html = await client.GetStringAsync(url); }); นี่คือปัญหาเริ่มต้นคำขอเว็บพร้อมกันมากกว่า 1,000 รายการ มีวิธีง่ายๆในการ …

6
วิธีเขียนฟังก์ชันอะซิงโครนัสสำหรับ Node.js
ฉันได้พยายามค้นคว้าว่าควรเขียนฟังก์ชันอะซิงโครนัสอย่างไร หลังจากไถเอกสารมากมายแล้วก็ยังไม่ชัดเจนสำหรับฉัน ฉันจะเขียนฟังก์ชันอะซิงโครนัสสำหรับโหนดได้อย่างไร ฉันจะใช้การจัดการเหตุการณ์ข้อผิดพลาดอย่างถูกต้องได้อย่างไร อีกวิธีในการถามคำถามของฉันคือฉันจะตีความฟังก์ชันต่อไปนี้ได้อย่างไร var async_function = function(val, callback){ process.nextTick(function(){ callback(val); }); }; นอกจากนี้ฉันพบคำถามนี้ใน SO ("ฉันจะสร้างฟังก์ชันอะซิงโครนัสแบบไม่บล็อกใน node.js ได้อย่างไร") น่าสนใจ ฉันรู้สึกว่ายังไม่ได้รับคำตอบ

4
จะรอให้ JavaScript Promise แก้ไขก่อนที่จะกลับมาทำงานได้อย่างไร
ฉันกำลังทำการทดสอบหน่วย กรอบการทดสอบจะโหลดเพจลงใน iFrame จากนั้นเรียกใช้การยืนยันกับเพจนั้น ก่อนการทดสอบแต่ละครั้งจะเริ่มขึ้นฉันจะสร้างสิ่งPromiseที่กำหนดให้onloadเหตุการณ์ของ iFrame เรียกresolve()ตั้งค่า iFrame srcและส่งคืนคำสัญญา ดังนั้นฉันก็สามารถโทรloadUrl(url).then(myFunc)และมันจะรอให้การโหลดหน้าก่อนที่จะดำเนินสิ่งที่myFuncเป็น ฉันใช้รูปแบบประเภทนี้ทั่วทุกที่ในการทดสอบของฉัน (ไม่ใช่แค่การโหลด URL) โดยหลักแล้วเพื่อให้การเปลี่ยนแปลง DOM เกิดขึ้น (เช่นเลียนแบบการคลิกปุ่มและรอให้ divs ซ่อนและแสดง) ข้อเสียของการออกแบบนี้คือฉันมักจะเขียนฟังก์ชันที่ไม่ระบุตัวตนโดยมีโค้ดสองสามบรรทัดอยู่ในนั้น นอกจากนี้ในขณะที่ฉันมีวิธีแก้ไข (QUnit's assert.async()) ฟังก์ชันทดสอบที่กำหนดคำสัญญาจะเสร็จสมบูรณ์ก่อนที่สัญญาจะทำงาน ฉันสงสัยว่ามีวิธีใดที่จะได้รับค่าจากPromiseหรือรอ (บล็อก / นอนหลับ) จนกว่าจะได้รับการแก้ไขที่คล้ายกับของ IAsyncResult.WaitHandle.WaitOne().NET ฉันรู้ว่า JavaScript เป็นเธรดเดียว แต่ฉันหวังว่านั่นไม่ได้หมายความว่าฟังก์ชันจะไม่สามารถให้ผลลัพธ์ได้ โดยพื้นฐานแล้วมีวิธีที่จะทำให้สิ่งต่อไปนี้คายผลลัพธ์ตามลำดับที่ถูกต้องหรือไม่? function kickOff() { return new Promise(function(resolve, reject) { $("#output").append("start"); setTimeout(function() { resolve(); }, 1000); }).then(function() …

8
วิธีที่ง่ายที่สุดในการรอให้งานอะซิงโครนัสบางอย่างเสร็จสมบูรณ์ใน Javascript?
ฉันต้องการทิ้งคอลเลคชัน mongodb แต่เป็นงานแบบอะซิงโครนัส รหัสจะเป็น: var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/xxx'); var conn = mongoose.connection; ['aaa','bbb','ccc'].forEach(function(name){ conn.collection(name).drop(function(err) { console.log('dropped'); }); }); console.log('all dropped'); คอนโซลจะแสดง: all dropped dropped dropped dropped อะไรคือวิธีที่ง่ายที่สุดในการทำให้แน่ใจว่าall droppedจะพิมพ์ออกมาหลังจากที่คอลเลกชั่นทั้งหมดถูกทิ้ง? สามารถใช้บุคคลที่สามเพื่อลดความซับซ้อนของรหัสได้


9
ฉันจะส่งคืนการตอบสนองจากการเรียก Observable / http / async ในเชิงมุมได้อย่างไร
ฉันมีบริการที่ส่งคืนค่าที่สังเกตได้ซึ่งส่งคำขอ http ไปยังเซิร์ฟเวอร์ของฉันและรับข้อมูล ฉันต้องการที่จะใช้ข้อมูลนี้ undefinedแต่ฉันมักจะจบลงด้วยการ มีปัญหาอะไร? บริการ : @Injectable() export class EventService { constructor(private http: Http) { } getEventList(): Observable&lt;any&gt;{ let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); return this.http.get("http://localhost:9999/events/get", options) .map((res)=&gt; res.json()) .catch((err)=&gt; err) } } ส่วนประกอบ: @Component({...}) export class EventComponent …

7
$ .when.apply ($, someArray) ทำอะไร?
ฉันอ่านเกี่ยวกับ Deferreds และสัญญา$.when.apply($, someArray)และให้มาข้าม ฉันไม่ชัดเจนเล็กน้อยว่าสิ่งนี้ทำอะไรได้บ้างโดยกำลังมองหาคำอธิบายว่าหนึ่งบรรทัดทำงานได้ตรงกันทั้งหมด (ไม่ใช่ข้อมูลโค้ดทั้งหมด) นี่คือบริบทบางส่วน: var data = [1,2,3,4]; // the ids coming back from serviceA var processItemsDeferred = []; for(var i = 0; i &lt; data.length; i++){ processItemsDeferred.push(processItem(data[i])); } $.when.apply($, processItemsDeferred).then(everythingDone); function processItem(data) { var dfd = $.Deferred(); console.log('called processItem'); //in the real world, this would probably …

3
การสร้างงานแบบอะซิงโครนัสใน Flask
ฉันกำลังเขียนแอปพลิเคชันใน Flask ซึ่งใช้งานได้ดีจริงๆยกเว้นว่าWSGIเป็นแบบซิงโครนัสและบล็อก ฉันมีงานหนึ่งโดยเฉพาะซึ่งเรียกไปยัง API ของบุคคลที่สามและงานนั้นอาจใช้เวลาหลายนาทีจึงจะเสร็จสมบูรณ์ ฉันต้องการโทรออก (จริงๆแล้วเป็นการโทรหลายครั้ง) และปล่อยให้มันทำงาน ในขณะที่การควบคุมกลับไปที่ Flask มุมมองของฉันดูเหมือนว่า: @app.route('/render/&lt;id&gt;', methods=['POST']) def render_script(id=None): ... data = json.loads(request.data) text_list = data.get('text_list') final_file = audio_class.render_audio(data=text_list) # do stuff return Response( mimetype='application/json', status=200 ) ตอนนี้สิ่งที่อยากทำคือมีไลน์ final_file = audio_class.render_audio() เรียกใช้และให้การเรียกกลับเพื่อดำเนินการเมื่อเมธอดส่งคืนในขณะที่ Flask สามารถดำเนินการตามคำขอต่อไปได้ นี่เป็นงานเดียวที่ฉันต้องการให้ Flask ทำงานแบบอะซิงโครนัสและฉันต้องการคำแนะนำเกี่ยวกับวิธีที่ดีที่สุดในการนำไปใช้ ฉันดู Twisted และ Klein แล้ว แต่ฉันไม่แน่ใจว่าพวกเขาโอเวอร์คิลเพราะ …

4
หลีกเลี่ยงการเรียกซ้ำเมื่ออ่าน / เขียนพอร์ตพร้อมกันหรือไม่?
การทำงานของพอร์ตทั้งหมดใน Rebol 3 เป็นแบบอะซิงโครนัส waitวิธีเดียวที่ฉันสามารถหาที่จะทำซิงโครการสื่อสารคือโทร แต่ปัญหาในการโทรรอในกรณีนี้คือจะตรวจสอบเหตุการณ์สำหรับพอร์ตที่เปิดอยู่ทั้งหมด (แม้ว่าจะไม่อยู่ในบล็อกพอร์ตที่ส่งผ่านเพื่อรอ) จากนั้นจึงเรียกตัวจัดการเหตุการณ์ตอบกลับ แต่การอ่าน / เขียนสามารถทำได้ในตัวจัดการเหตุการณ์เหล่านั้น ซึ่งอาจส่งผลให้เกิดการเรียกซ้ำเพื่อ "รอ" ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร?
108 asynchronous  io  rebol  rebol3 

10
ขนาดคอร์พูลเทียบกับขนาดพูลสูงสุดใน ThreadPoolExecutor
อะไรคือความแตกต่างระหว่างขนาดของคอร์พูลและขนาดพูลสูงสุดเมื่อเราพูดถึงThreadPoolExecutor? สามารถอธิบายได้ด้วยความช่วยเหลือของตัวอย่างหรือไม่?

4
เหตุใดฟังก์ชันทั้งหมดจึงไม่ควรเป็น async ตามค่าเริ่มต้น
async-รอคอยรูปแบบของสุทธิ 4.5 มีการเปลี่ยนแปลงกระบวนทัศน์ เกือบจะดีเกินไปที่จะเป็นจริง ฉันได้ย้ายรหัส IO-heavy ไปยัง async-await เพราะการบล็อกเป็นเรื่องในอดีต มีคนไม่กี่คนที่เปรียบเทียบ async-await กับ zombie infestation และฉันพบว่ามันค่อนข้างแม่นยำ รหัส Async ชอบรหัส async อื่น ๆ (คุณต้องมีฟังก์ชัน async เพื่อรอฟังก์ชัน async) ฟังก์ชันที่มากขึ้นเรื่อย ๆ จึงกลายเป็น async และสิ่งนี้จะเติบโตขึ้นเรื่อย ๆ ใน codebase ของคุณ การเปลี่ยนฟังก์ชั่นเป็น async ค่อนข้างซ้ำซากและไม่น่าแปลกใจ โยนasyncคีย์เวิร์ดในการประกาศตัดค่าส่งคืนTask&lt;&gt;และคุณก็ทำได้สำเร็จ มันค่อนข้างจะไม่มั่นคงว่ากระบวนการทั้งหมดนั้นง่ายเพียงใดและในไม่ช้าสคริปต์การแทนที่ข้อความจะทำให้ "การย้าย" ส่วนใหญ่เป็นไปโดยอัตโนมัติ และตอนนี้คำถาม .. ถ้าโค้ดทั้งหมดของฉันค่อยๆเปลี่ยน async ทำไมไม่ทำให้ async ทั้งหมดเป็นค่าเริ่มต้นล่ะ เหตุผลที่ชัดเจนที่ฉันคิดคือประสิทธิภาพ Async-await …

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