All:Làm thế nào để quyết định lời hứa thực hiện một rồi/catch theo
Tôi khá mới để hứa, đây là một ví dụ:
var someAsyncThing = function() {
return new Promise(function(resolve, reject) {
// this will throw, x does not exist
resolve(x + 2);
});
};
var someOtherAsyncThing = function() {
return new Promise(function(resolve, reject) {
reject('something went wrong');
});
};
someAsyncThing().then(function() {
return someOtherAsyncThing();
}).catch(function(error) {
console.log('oh no', error);
});
Tôi không hoàn toàn nhận được như thế nào .Sau đó() làm việc với Promise, ngay bây giờ tôi có thể hiểu được someAsyncThing()
trả lại một Promise, mà sẽ tạo ra một ngoại lệ và do đó đi đến .catch()
một phần. Và nếu chúng ta thay đổi resolve(x+2)
-resolve(4)
, sau đó nó sẽ đi để chạy someOtherAsyncThing();
và gửi lại lời hứa khác,
câu hỏi đầu tiên là nếu sự trở lại của .Sau đó() là Promise đó?
Và thứ hai câu hỏi, nếu trong someOtherAsyncThing()
's Promise, tôi sử dụng resolve(x+2)
gây ra một ngoại lệ, sau đó nó cũng sẽ đi đến cùng .catch()
phần, sau đó làm thế nào tôi có thể làm cho điều đó .catch()
chỉ bắt ngoại lệ do someAsyncThing()
's lời hứa (và cùng một câu hỏi cho chuỗi .then()
nếu có)?
Cảm ơn
Việc bắt giữ sẽ bắt bất kỳ ngoại lệ nào trong chuỗi, để có thêm thông tin phong phú về ngoại lệ hoặc để làm điều gì đó khác tùy thuộc vào lời hứa nào đã loại trừ ngoại lệ, bạn phải từ chối với thông tin mà bạn sẽ xử lý trong khối đánh bắt. – PixMach
@PixMach Cảm ơn, đã hiểu. Điều này thực sự linh hoạt và khó sử dụng nó một cách thành thạo. – Kuan