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

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

7
ความแตกต่างระหว่างอนาคตและสัญญาคืออะไร?
ความแตกต่างระหว่างFutureและPromiseคืออะไร พวกเขาทั้งสองทำตัวเหมือนเป็นตัวแทนสำหรับผลลัพธ์ในอนาคต แต่ความแตกต่างหลักอยู่ที่ไหน

27
แก้ไขสัญญาหนึ่งหลังจากที่อื่น (เช่นในลำดับ)?
พิจารณารหัสต่อไปนี้ที่อ่านอาเรย์ของไฟล์ในลักษณะอนุกรม / เรียงลำดับ readFilesส่งคืนสัญญาซึ่งแก้ไขได้เมื่อไฟล์ทั้งหมดถูกอ่านตามลำดับ var readFile = function(file) { ... // Returns a promise. }; var readFiles = function(files) { return new Promise((resolve, reject) => var readSequential = function(index) { if (index >= files.length) { resolve(); } else { readFile(files[index]).then(function() { readSequential(index + 1); }).catch(reject); } }; readSequential(0); // Start! …

17
การจัดการข้อผิดพลาดใน Promise.all
ฉันมีคำสัญญามากมายที่ฉันแก้ไขด้วย Promise.all(arrayOfPromises); ฉันไปเพื่อดำเนินการต่อสัญญาโซ่ ดูเหมือนอะไรแบบนี้ existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route){ return route.handler.promiseHandler(); }); return Promise.all(arrayOfPromises) }); existingPromiseChain = existingPromiseChain.then(function(arrayResolved) { // do stuff with my array of resolved promises, eventually ending with a res.send(); }); ฉันต้องการเพิ่มคำสั่ง catch เพื่อจัดการแต่ละสัญญาในกรณีที่เกิดข้อผิดพลาด แต่เมื่อฉันลองPromise.allส่งคืนข้อผิดพลาดแรกที่พบ (ไม่สนใจส่วนที่เหลือ) จากนั้นฉันไม่สามารถรับข้อมูลจากส่วนที่เหลือของสัญญาใน อาร์เรย์ (ที่ไม่ผิดพลาด) ฉันพยายามทำบางสิ่งเช่น .. existingPromiseChain = existingPromiseChain.then(function() …

6
ฉันต้องส่งคืนหลังจากแก้ไข / ปฏิเสธก่อนกำหนดหรือไม่
สมมติว่าฉันมีรหัสต่อไปนี้ function divide(numerator, denominator) { return new Promise((resolve, reject) => { if(denominator === 0){ reject("Cannot divide by 0"); return; //superfluous? } resolve(numerator / denominator); }); } หากเป้าหมายของฉันคือการใช้rejectเพื่อออกก่อนกำหนดฉันควรเข้าสู่นิสัยการreturnไอเอ็นจีทันทีหลังจากนั้นเช่นกัน?

1
ยังมีเหตุผลที่จะใช้ห้องสมุดสัญญาเช่น Q หรือ BlueBird ตอนนี้ที่เรามีสัญญา ES6 หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ หลังจาก Node.js เพิ่มการสนับสนุนแบบเนทีฟสำหรับคำสัญญาแล้วยังมีเหตุผลที่จะใช้ห้องสมุดอย่าง Q หรือ BlueBird หรือไม่? ตัวอย่างเช่นหากคุณกำลังเริ่มโครงการใหม่และสมมติว่าในโครงการนี้คุณไม่มีการอ้างอิงใด ๆ ที่ใช้ไลบรารีเหล่านี้เราสามารถพูดได้หรือไม่ว่าไม่มีเหตุผลที่จะใช้ไลบรารีดังกล่าวอีกต่อไป?

8
จะยกเลิกคำขอ $ http ใน AngularJS ได้อย่างไร
รับคำขอ Ajax ใน AngularJS $http.get("/backend/").success(callback); วิธีที่มีประสิทธิภาพมากที่สุดในการยกเลิกคำขอนั้นคือถ้ามีการเปิดตัวคำขออื่น (เช่นแบ็กเอนด์เดียวกันพารามิเตอร์ที่แตกต่างกัน)

3
Promise.all: ลำดับของค่าที่แก้ไขแล้ว
มองไปที่MDNดูเหมือนว่าvaluesผ่านไปยังการthen()เรียกกลับของ Promise.all มีค่าตามลำดับของสัญญา ตัวอย่างเช่น: var somePromises = [1, 2, 3, 4, 5].map(Promise.resolve); return Promise.all(somePromises).then(function(results) { console.log(results) // is [1, 2, 3, 4, 5] the guaranteed result? }); ใครสามารถอ้างข้อมูลจำเพาะที่ระบุว่าvaluesควรจะเรียงลำดับใด? PS: การเรียกใช้โค้ดเช่นนั้นแสดงให้เห็นว่าสิ่งนี้ดูเหมือนจะเป็นจริงแม้ว่าจะไม่มีข้อพิสูจน์แน่นอน - มันอาจเป็นเรื่องบังเอิญ

7
เมื่อใดจึงจะถือว่าเป็นปฏิปักษ์ต่อคำสัญญา?
ฉันได้ดูที่สัญญาคำถามที่พบบ่อยนกชนิดหนึ่งในสิ่งที่มันกล่าวว่า.then(success, fail)เป็น antipattern ฉันไม่ค่อยเข้าใจคำอธิบายสำหรับลองและจับ เกิดอะไรขึ้นกับสิ่งต่อไปนี้ some_promise_call() .then(function(res) { logger.log(res) }, function(err) { logger.log(err) }) ดูเหมือนว่าตัวอย่างจะแนะนำสิ่งต่อไปนี้เป็นวิธีที่ถูกต้อง some_promise_call() .then(function(res) { logger.log(res) }) .catch(function(err) { logger.log(err) }) ความแตกต่างคืออะไร?

5
ฉันจะแนะนำ XHR ดั้งเดิมได้อย่างไร
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันต้องการใช้สัญญา (native) ในแอปส่วนหน้าของฉันเพื่อดำเนินการตามคำขอ XHR แต่ไม่มีการให้กรอบที่ใหญ่โต ฉันต้องการ XHR ของฉันจะกลับมาสัญญา แต่ไม่ได้ทำงาน (ให้ฉัน: Uncaught TypeError: Promise resolver undefined is not a function) function makeXHRRequest (method, url, done) { var xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.onload = function() { return new Promise().resolve(); }; xhr.onerror = function() { return new Promise().reject(); …

6
HttpPromise เชิงมุม: ความแตกต่างระหว่างเมธอด `success` /` error` และการโต้เถียงของ `then`
ตามAngularJS doc การเรียกเพื่อ$httpส่งคืนสิ่งต่อไปนี้: ผลตอบแทนสัญญาวัตถุที่มีมาตรฐานแล้ววิธีการและสอง http วิธีการเฉพาะ: ความสำเร็จและข้อผิดพลาด แล้ววิธีการจะใช้เวลาสองข้อโต้แย้งที่ประสบความสำเร็จและข้อผิดพลาดการเรียกกลับซึ่งจะเรียกว่ามีวัตถุการตอบสนอง วิธีความสำเร็จและข้อผิดพลาดใช้อาร์กิวเมนต์เดียว - ฟังก์ชั่นที่จะถูกเรียกเมื่อคำขอประสบความสำเร็จหรือล้มเหลวตามลำดับ ข้อโต้แย้งที่ส่งผ่านไปยังฟังก์ชั่นเหล่านี้เป็นการทำลายการตอบสนองของวัตถุการตอบสนองผ่านเข้าไปในวิธีการนั้น นอกเหนือจากข้อเท็จจริงที่ว่าresponseวัตถุถูกทำลายในกรณีหนึ่งฉันไม่ได้รับความแตกต่างระหว่าง การเรียกกลับสำเร็จ / ข้อผิดพลาดถูกส่งผ่านเป็นอาร์กิวเมนต์ของ promise.then การเรียกกลับถูกส่งผ่านเป็นอาร์กิวเมนต์สำหรับpromise.success/ promise.errorวิธีของสัญญา มีผู้ใด? จุดประสงค์ของสองวิธีที่แตกต่างกันในการผ่านการโทรกลับที่เหมือนกันคืออะไร
177 angularjs  promise 

3
วิธีค้นหาสัญญาที่ไม่ได้จัดการใน Node.js UnhandledPromiseRejectionWarning?
Node.js จากเวอร์ชัน 7 มี async / คอยน้ำตาล syntactic สำหรับจัดการสัญญาและตอนนี้ในรหัสของฉันคำเตือนต่อไปนี้เกิดขึ้นค่อนข้างบ่อย: (node:11057) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: Error: Can't set headers after they are sent. (node:11057) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero …

13
การประมวลผล Promise.all ดั้งเดิมของ Node.js เป็นแบบขนานหรือเรียงตามลำดับหรือไม่
ฉันต้องการชี้แจงประเด็นนี้เนื่องจากเอกสารไม่ชัดเจนเกินไป Q1:มีการPromise.all(iterable)ประมวลผลสัญญาตามลำดับหรือในแบบคู่ขนาน? หรือโดยเฉพาะอย่างยิ่งมันเป็นเทียบเท่ากับการทำงานที่ถูกผูกมัดสัญญาเช่น p1.then(p2).then(p3).then(p4).then(p5).... หรือมันคือบางชนิดอื่น ๆ ของอัลกอริทึมที่ทุกp1, p2, p3, p4, p5ฯลฯ จะถูกเรียกในเวลาเดียวกัน (ในแบบคู่ขนาน) และผลจะถูกส่งกลับทันทีที่ทุกแก้ไข (หรือหนึ่งปฏิเสธ)? Q2:หากPromise.allทำงานแบบขนานมีวิธีที่สะดวกในการเรียกใช้ซ้ำ ๆ ได้หรือไม่? หมายเหตุ : ฉันไม่ต้องการใช้ Q หรือ Bluebird แต่เป็นข้อมูลจำเพาะ ES6 ทั้งหมด

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ทำงานร่วมกันได้อย่างไร

22
ฉันจะกำหนดสถานะของสัญญา JavaScript ได้อย่างไร
ฉันมีสัญญา JavaScript บริสุทธิ์ (การติดตั้งในตัวหรือการเติมโพลี): var promise = new Promise(function (resolve, reject) { /* ... */ }); จากข้อกำหนดคุณสมบัติสัญญาสามารถเป็นหนึ่งใน: 'ตัดสิน' และ 'แก้ไขแล้ว' 'ตัดสิน' และ 'ปฏิเสธ' 'รอดำเนินการ' ฉันมีกรณีการใช้งานที่ฉันต้องการสอบปากคำสัญญาพร้อมกันและกำหนด: สัญญาถูกตัดสินหรือไม่ ถ้าเป็นเช่นนั้นสัญญาจะได้รับการแก้ไขหรือไม่ ฉันรู้ว่าฉันสามารถใช้#then()เพื่อกำหนดเวลาการทำงานที่จะดำเนินการแบบอะซิงโครนัสหลังจากสถานะการเปลี่ยนแปลงสัญญา ฉันไม่ได้ถามว่าจะทำอย่างไร คำถามนี้เป็นคำถามเฉพาะที่เกี่ยวกับการสอบสวนซิงโครของรัฐของสัญญา ฉันจะบรรลุสิ่งนี้ได้อย่างไร

4
ฉันจะรอคำสัญญาให้เสร็จก่อนที่จะส่งคืนตัวแปรของฟังก์ชันได้อย่างไร
ฉันยังคงดิ้นรนกับคำมั่นสัญญา แต่ก็มีความคืบหน้าขอบคุณชุมชนที่นี่ ฉันมีฟังก์ชั่น JS ง่าย ๆ ซึ่งสอบถามฐานข้อมูลแยกวิเคราะห์ มันควรจะส่งคืนอาร์เรย์ของผลลัพธ์ แต่เห็นได้ชัดเนื่องจากธรรมชาติของการสืบค้นแบบอะซิงโครนัส ฉันต้องทำอะไรเพื่อให้ฟังก์ชั่นนี้รอผลของสัญญา? นี่คือรหัสของฉัน: function resultsByName(name) { var Card = Parse.Object.extend("Card"); var query = new Parse.Query(Card); query.equalTo("name", name.toString()); var resultsArray = []; var promise = query.find({ success: function(results) { // results is an array of Parse.Object. console.log(results); //resultsArray = results; return results; }, …

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