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-06-24 11:18:01 +08:00
什么是proxy promise pattern。。。
|
2
shuson OP @lujiajing1126 当作是proxy pattern吧,表达不清楚了
|
3
sodatea 2015-06-24 11:31:13 +08:00 1
orz 这个代码风格……
建议看看周爱民的这篇文章 -> http://www.w3ctech.com/topic/916 |
4
otakustay 2015-06-24 11:44:31 +08:00
如果你确保你的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上去,所以逻辑的处理是线性的而不是嵌套的 |
5
shuson OP @otakustay 感谢你的解决方案, 很有启发。
但是,我的问题是可否用proxy pattern来重构我那些垃圾的嵌套代码。 |