У меня проблема с обещаниями jQuery 1.9.1, где мне потенциально нужна условная логика, которая вернет другую отложенную, и я не уверен, как ее обрабатывать. Это была моя лучшая попытка, но, как видно из комментариев, когда я попал в ветку else, я все равно ударяю вторую функцию .then(), где я надеюсь, что смогу вернуться к пользователю. Любые шаблоны для обработки такого сценария?Работа с ветвями с обещаниями
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()
});
Это сообщение может вам помочь: http://stackoverflow.com/questions/12149993/attempting-to-break-jquery-promise-chain-with-then-fail-and-reject – mattytommo
[This post] (http: //net.tutsplus.com/tutorials/javascript-ajax/wrangle-async-tasks-with-jquery-promises/) поможет вам лучше понять обещания. В общем случае, если вы хотите использовать условные выражения, вы должны сэкономить обещание как переменную и выполнить «' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – acconrad