
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 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来重构我那些垃圾的嵌套代码。 |