actionA, actionB都返回promise。
基本逻辑是,actionA的reject要执行actionB,actionB的resolve要执行actionA,此时actionA再reject就error。
actionA().then(
function(){//resolve
//do right thing
},
function(){ //handle reject
actionB().then(function(){
actionA().then(function(){
//do right thing
},function(){
//Error Alert from actionA
})
},function(){
//Error Alert from actionB
})
}
)
怎么使用proxy pattern优化上面的code
1
lujiajing1126 2015 年 6 月 24 日
什么是proxy promise pattern。。。
|
2
shuson OP @lujiajing1126 当作是proxy pattern吧,表达不清楚了
|
3
sodatea 2015 年 6 月 24 日 orz 这个代码风格……
建议看看周爱民的这篇文章 -> http://www.w3ctech.com/topic/916 |
4
otakustay 2015 年 6 月 24 日
如果你确保你的do right thing是不会出错的,或者出错也要用一致的逻辑来处理error,那这个逻辑应该是很简单的:
var a = actionA(); a.then(doRightThing); // 正确的 a.catch(actionB) // 出错后调用actionB .then(actionA) // 如果actionB成功就继续actionA .then(doRightThing) // actionA成功就doRightThing .catch(alertError); // 上面无论哪一步失败都处理错误 重点在一系列的then过程中,任何一个环节出错,错误都会传到最后近的一个catch上去,所以逻辑的处理是线性的而不是嵌套的 |