คำถามติดแท็ก ecmascript-2017

20
ใช้ async / await กับ forEach loop
มีปัญหากับการใช้async/ awaitในการforEachวนซ้ำหรือไม่? ฉันพยายามวนซ้ำไฟล์ต่าง ๆ และawaitเนื้อหาของแต่ละไฟล์ import fs from 'fs-promise' async function printFiles () { const files = await getFilePaths() // Assume this works fine files.forEach(async (file) => { const contents = await fs.readFile(file, 'utf8') console.log(contents) }) } printFiles() รหัสนี้ใช้งานได้ แต่มีบางอย่างผิดปกติกับสิ่งนี้หรือไม่ ฉันมีใครบางคนบอกฉันว่าคุณไม่ควรใช้async/ awaitในลำดับการทำงานที่สูงขึ้นเช่นนี้ดังนั้นฉันแค่อยากจะถามว่ามันมีปัญหาหรือไม่

10
การรวมกันของฟังก์ชั่น async + รอ + setTimeout
ฉันกำลังพยายามใช้คุณสมบัติใหม่ของ async และฉันหวังว่าการแก้ปัญหาของฉันจะช่วยผู้อื่นในอนาคต นี่คือรหัสของฉันซึ่งใช้งานได้: async function asyncGenerator() { // other code while (goOn) { // other code var fileList = await listFiles(nextPageToken); var parents = await requestParents(fileList); // other code } // other code } function listFiles(token) { return gapi.client.drive.files.list({ 'maxResults': sizeResults, 'pageToken': token, 'q': query }); } ปัญหาคือขณะที่ลูปของฉันทำงานเร็วเกินไปและสคริปต์ส่งคำขอมากเกินไปต่อวินาทีไปยัง google …

7
จะปฏิเสธในรูปแบบ async / รอคอยไวยากรณ์ได้อย่างไร
ฉันจะปฏิเสธคำสัญญาที่ส่งคืนโดยฟังก์ชัน async / await ได้อย่างไร เช่นเดิม foo(id: string): Promise<A> { return new Promise((resolve, reject) => { someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400)) }); } แปลเป็น async / รอคอย async foo(id: string): Promise<A> { try{ await someAsyncPromise(); return 200; } catch(error) {//here goes if someAsyncPromise() rejected} return 400; //this will result in a resolved promise. }); …

6
ฉันจะใช้ async / คอยอยู่ที่ระดับสูงสุดได้อย่างไร
ฉันได้ไปมากกว่าasync/ awaitและหลังจากอ่านบทความต่าง ๆ ฉันตัดสินใจทดสอบด้วยตนเอง อย่างไรก็ตามฉันไม่สามารถคาดศีรษะได้ว่าทำไมสิ่งนี้ถึงไม่ทำงาน: async function main() { var value = await Promise.resolve('Hey there'); console.log('inside: ' + value); return value; } var text = main(); console.log('outside: ' + text); คอนโซลเอาต์พุตต่อไปนี้ (โหนด v8.6.0): > ข้างนอก: [วัตถุสัญญา] > ข้างใน: เฮ้นั่น ทำไมข้อความบันทึกภายในฟังก์ชั่นถึงทำงานหลังจากนั้น ฉันคิดว่าเหตุผลasync/ awaitถูกสร้างขึ้นเพื่อดำเนินการซิงโครนัสโดยใช้งานอะซิงโครนัส มีวิธีที่ฉันสามารถใช้ค่าที่ส่งกลับภายในฟังก์ชั่นโดยไม่ต้องใช้ความ.then()หลังmain()?

5
ใช้ async กำลังรออยู่กับ Array.map
รับรหัสต่อไปนี้: var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }); ซึ่งสร้างข้อผิดพลาดต่อไปนี้: TS2322: พิมพ์ 'Promise <number> []' ไม่สามารถกำหนดให้พิมพ์ 'number []' พิมพ์ 'Promise <number> ไม่สามารถกำหนดให้พิมพ์' number 'ได้ ฉันจะแก้ไขได้อย่างไร ฉันจะสร้างasync awaitและArray.mapทำงานร่วมกันได้อย่างไร

7
ลอง / จับบล็อกด้วย async / await
ฉันกำลังขุดเข้าไปในโหนด 7 คุณลักษณะ async / await และยังคงสะดุดกับโค้ดเช่นนี้ function getQuote() { let quote = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis …

4
จะ "รอ" การติดต่อกลับได้อย่างไร?
เมื่อใช้การโทรกลับธรรมดาเช่นในตัวอย่างด้านล่าง: test() { api.on( 'someEvent', function( response ) { return response; }); } ฟังก์ชันจะเปลี่ยนไปใช้ async / await ได้อย่างไร? โดยเฉพาะสมมติว่ามีการเรียกใช้ 'someEvent' ครั้งเดียวและครั้งเดียวฉันต้องการให้การทดสอบฟังก์ชันเป็นฟังก์ชัน async ซึ่งจะไม่ส่งคืนจนกว่าจะมีการเรียกกลับเช่น async test() { return await api.on( 'someEvent' ); }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.