当在我的单页浏览器应用程序中使用 JavaScript 与服务器通信时,我想提供一个回调函数,该函数始终在服务器回复后调用,无论结果是成功还是某种错误。
我需要这个的两种情况:
1)我想在等待服务器响应时禁用“保存”按钮,并在服务器响应错误或成功后再次启用它。
2)我有一个轮询机制,当服务器由于某种原因响应缓慢时,我想防止调用堆叠 - 我想等待一个轮询调用完成后再进行下一个。
我现在拥有的一个解决方案涉及确保两个函数(成功和错误)作为长方法链中的选项传递,这感觉像是一个脆弱且麻烦的解决方案(伪代码):
function doCall() {
framework1.callit({success : myCallback, error : myCallback})
};
framework123.callit = function(options) {
options = options || {};
if (options.error) {
var oldError = options.error;
options.error = function(errorStuff) {
// callit error stuff
oldError(errorStuff);
} else {
// callit error stuff
}
generalCallFunction(options);
}
function generalCallFunction(options) {
options = // ... checking success and error once again to get general success and error stuff in there, plus adding more options
ajax( blah, blah, options);
}
我还有一个主干解决方案,其中我以与上面类似的方式监听同步事件和错误回调。
我总是担心错误或成功函数会在途中丢失,并且整个事情很难理解。
有什么框架或模式可以让这些东西尽可能简单吗?无论结果是错误还是成功,总要发生的一般事情是不是很奇怪?
最佳答案
您可以使用jQuery.ajax({此处详细信息...).always(callback);
或者,在主干
// logic to create model here
model.fetch().always(callback);
关于javascript - javascript 中特定调用的所有 ajax 回调的一个入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637274/