Tôi gặp vấn đề với lời hứa jQuery 1.9.1, nơi mà tôi có khả năng cần logic điều kiện sẽ trả về một trì hoãn khác và tôi không chắc chắn cách xử lý nó. Đây là nỗ lực tốt nhất của tôi, nhưng như ý kiến chỉ ra bên dưới, khi tôi nhấn nhánh khác, tôi vẫn nhấn hàm thứ hai .then(), nơi tôi hy vọng tôi có thể quay lại với người dùng. Bất kỳ mô hình nào về cách xử lý một kịch bản như vậy?Xử lý các chi nhánh với Promises
storage.provision(c)
.then(function(rc){
if(rc === 0){
storage.write(c);
}else{
return options.onSuccess(rc); //how i got back to the users callbacks/promise, but this
//takes me to the .then below
}
})
//storage.write returns a promise as well, do I do another .then
// like this?
.then(function(rc){
//I was hoping this would catch, the storage.write() case, and it does, but it also catches
//the retun options.onSuccess(rc) in the else case.
options.onSuccess(rc);
})
.fail(function(e){
//handle error using .reject()
});
Bài đăng này có thể giúp bạn: http://stackoverflow.com/questions/12149993/attempting-to-break-jquery-promise-chain-with-then-fail-and-reject – mattytommo
[Bài đăng này] (http: //net.tutsplus.com/tutorials/javascript-ajax/wrangle-async-tasks-with-jquery-promises/) sẽ giúp bạn hiểu lời hứa tốt hơn. Nói chung nếu bạn muốn sử dụng điều kiện, bạn nên lưu lời hứa như là một biến và thực hiện 'sau đó'' thành công' hoặc 'thất bại' bên trong điều kiện của bạn, bạn dường như đang làm nó theo cách khác. – acconrad