我在处理回调时遇到问题,问题是很难编写和遵循代码,特别是对于其他程序员。错误是很难做的,当我编写函数时,我有时会注意到错误,我想知道是否有一种优雅的方法来重写代码以防止它。
当前示例是一个包装函数,用于发送AJAX调用,并根据响应执行退休或其他逻辑:
按下一个按钮,触发buttonHandler,但我们不想直接调用ajax方法,而是围绕ajax方法执行某些逻辑的函数设置一组包装函数。
buttonHandler : function() {
var that = this;
var success = function() {
that.setState({status : "okay"});
};
var failiure = function() {
that.setState({status : "sorry it failed!"});
};
this.call(success, failiure);
},
// our wrapper of the ajax call
call : function(success_callback, fail_callback) {
var that = this;
var successHandler = function(status, newUrl) {
// 200 ok
if (status === 200) {
success_callback();
}
// Follow the 302 redirect
if (status === 302) {
//do something with newUrl and...
console.log("following");
that.fakeAjaxCall(successHandler, errorHandler);
}
};
var errorHandler = function(status){
//retry if 503
if (status === 503) {
console.log("retrying");
that.fakeAjaxCall(successHandler, errorHandler);
}
};
this.fakeAjaxCall(successHandler, errorHandler);
}
jsbin link:http://jsbin.com/hivawuheko/1/
这里可能犯的错误是
因此,我正在寻找的是一种解决这种将代码插入回调链的一般问题的方法,但仍然可以从团队合作的角度对代码进行维护和添加,其中有些人可能想要更改和编辑函数。
请注意,我之前写的错误只会在某些情况下破坏代码,并且可能以几乎不可见的方式。