คำถามติดแท็ก es6-promise

ES6 Promise คืออ็อบเจ็กต์ ECMAScript 2015 ที่แสดงถึงการดำเนินการแบบอะซิงโครนัสที่กำลังดำเนินการอยู่

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 …

8
วิธีใช้ typescript กับสัญญา ES6 ดั้งเดิม
ฉันเป็นผู้เริ่มต้นใช้งาน typescript โดยสมบูรณ์และฉันสงสัยว่าจะสามารถใช้สัญญา ES6 ใน typescript ได้หรือไม่และฉันจะต้องทำอย่างไรเพื่อให้มันใช้งานได้ ฉันกำลังใช้งานโหนด 0.11.14 และได้รับข้อผิดพลาดระหว่างการรวบรวม "ไม่พบชื่อ 'สัญญา'"

16
ยกเลิกโซ่สัญญาวานิลลา ECMAScript 6
มีวิธีการล้างอินสแตนซ์.thenJavaScript Promiseหรือไม่? ผมเคยเขียนกรอบการทดสอบ JavaScript บนด้านบนของQUnit เฟรมเวิร์กจะทำการทดสอบพร้อมกันโดยรันแต่ละอันในไฟล์Promise. (ขออภัยสำหรับความยาวของบล็อกโค้ดนี้ฉันแสดงความคิดเห็นว่าดีที่สุดเท่าที่จะทำได้ดังนั้นจึงรู้สึกน่าเบื่อน้อยลง) /* Promise extension -- used for easily making an async step with a timeout without the Promise knowing anything about the function it's waiting on */ $$.extend(Promise, { asyncTimeout: function (timeToLive, errorMessage) { var error = new Error(errorMessage || "Operation timed out."); var …

2
เหตุใดสัญญา javascript ES6 จึงดำเนินการต่อไปหลังจากการแก้ไข
ตามที่ฉันเข้าใจคำสัญญาคือสิ่งที่สามารถแก้ไข () หรือปฏิเสธ () ได้ แต่ฉันรู้สึกแปลกใจที่พบว่ารหัสในสัญญายังคงดำเนินการต่อไปหลังจากมีการเรียกการแก้ไขหรือปฏิเสธ ฉันถือว่าการแก้ไขหรือปฏิเสธเป็นเวอร์ชันที่เป็นมิตรกับสิ่งแวดล้อมของ exit หรือ return ซึ่งจะหยุดการทำงานของฟังก์ชันทันทีทั้งหมด ใครช่วยอธิบายความคิดเบื้องหลังว่าทำไมบางครั้งตัวอย่างต่อไปนี้จึงแสดง console.log หลังจากการโทรแก้ไข: var call = function() { return new Promise(function(resolve, reject) { resolve(); console.log("Doing more stuff, should not be visible after a resolve!"); }); }; call().then(function() { console.log("resolved"); }); jsbin

5
สัญญาส่งพารามิเตอร์เพิ่มเติมไปที่โซ่แล้ว
คำสัญญาตัวอย่างเช่น: var P = new Promise(function (resolve, reject) { var a = 5; if (a) { setTimeout(function(){ resolve(a); }, 3000); } else { reject(a); } }); หลังจากที่เราเรียก.then()วิธีการตามสัญญา: P.then(doWork('text')); จากนั้นdoWorkฟังก์ชันจะมีลักษณะดังนี้: function doWork(data) { return function(text) { // sample function to console log consoleToLog(data); consoleToLog(b); } } ฉันจะหลีกเลี่ยงการส่งคืนฟังก์ชันภายในใน doWork เพื่อเข้าถึงข้อมูลจากพารามิเตอร์สัญญาและข้อความได้อย่างไร มีเทคนิคในการหลีกเลี่ยงฟังก์ชันด้านในหรือไม่?

16
วิธีที่ดีที่สุดในการ จำกัด การทำงานพร้อมกันเมื่อใช้ Promise.all () ของ ES6 คืออะไร
ฉันมีโค้ดบางอย่างที่ทำซ้ำในรายการที่ถูกสืบค้นจากฐานข้อมูลและทำการร้องขอ HTTP สำหรับแต่ละองค์ประกอบในรายการนั้น บางครั้งรายการนั้นอาจเป็นจำนวนที่มากพอสมควร (ในหลักพัน) และฉันต้องการให้แน่ใจว่าฉันไม่ได้กดปุ่มเว็บเซิร์ฟเวอร์ที่มีคำขอ HTTP พร้อมกันหลายพันรายการ เวอร์ชันย่อของโค้ดนี้มีลักษณะดังนี้ ... function getCounts() { return users.map(user => { return new Promise(resolve => { remoteServer.getCount(user) // makes an HTTP request .then(() => { /* snip */ resolve(); }); }); }); } Promise.all(getCounts()).then(() => { /* snip */}); รหัสนี้ทำงานบนโหนด 4.3.2 หากต้องการย้ำอีกครั้งสามารถPromise.allจัดการได้เพื่อให้มีการดำเนินการตามสัญญาเพียงจำนวนหนึ่งในเวลาใดก็ตาม?

5
วิธีคืนสัญญามากมายและรอให้หมดก่อนทำอย่างอื่น
ฉันมีลูปที่เรียกเมธอดที่ทำสิ่งต่างๆแบบอะซิงโครนัส ลูปนี้สามารถเรียกใช้เมธอดได้หลายครั้ง หลังจากลูปนี้ฉันมีลูปอื่นที่ต้องดำเนินการก็ต่อเมื่อทำสิ่งที่ไม่ตรงกันทั้งหมด สิ่งนี้แสดงให้เห็นถึงสิ่งที่ฉันต้องการ: for (i = 0; i < 5; i++) { doSomeAsyncStuff(); } for (i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } ฉันไม่ค่อยคุ้นเคยกับคำสัญญามีใครช่วยฉันทำสิ่งนี้ให้สำเร็จได้บ้าง นี่คือdoSomeAsyncStuff()พฤติกรรมของฉัน: function doSomeAsyncStuff() { var editor = generateCKEditor(); editor.on('instanceReady', function(evt) { doSomeStuff(); // There should be the resolve() of the promises I think. …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.