Javascript 同步/异步AJAX函数的模式
我正在编写一个函数,该函数应该从另一台服务器获取一些JSON,同步或异步都取决于调用方式。在伪代码中,我有:Javascript 同步/异步AJAX函数的模式,javascript,ajax,Javascript,Ajax,我正在编写一个函数,该函数应该从另一台服务器获取一些JSON,同步或异步都取决于调用方式。在伪代码中,我有: function getData(async, callback) { if (async) { // Get the data... return data; } else { // Get the data... callback(data); } } 看起来很奇怪,同一个函数要么返回
function getData(async, callback) {
if (async) {
// Get the data...
return data;
}
else {
// Get the data...
callback(data);
}
}
看起来很奇怪,同一个函数要么返回值,要么不返回值。。。我在这里违反了任何最佳实践吗?我不认为拥有一个有时异步工作,有时不异步的函数有任何意义,因为调用代码必须知道它在做什么,并相应地进行操作。也可以有两个函数,一个用于sync,一个用于async,这使得代码的编写和理解更加简单 此外,执行任何同步ajax调用对用户界面的影响通常都是不好的,因此任何好的用户体验设计都几乎总是避免同步ajax 如果只有一个函数,那么我建议使用异步设计。然后,调用方可以将代码编写为异步样式,这两种方式都可以 此外,您的异步逻辑是反向的。它需要在异步时调用回调
function getData(async, callback) {
if (async) {
// get the data in async fashion
doAjaxCall(function(data) {
callback(data);
});
} else {
// get the data synchronously
callback(data);
}
}
作为一个有趣的参考,jQueryAjax函数是这样建模的。它有一个异步设计,在某些情况下可以传递一个参数来同步工作。我认为有一个函数有时异步工作,有时不异步,这没有任何意义,因为调用代码必须知道它在做什么,并相应地进行操作。也可以有两个函数,一个用于sync,一个用于async,这使得代码的编写和理解更加简单 此外,执行任何同步ajax调用对用户界面的影响通常都是不好的,因此任何好的用户体验设计都几乎总是避免同步ajax 如果只有一个函数,那么我建议使用异步设计。然后,调用方可以将代码编写为异步样式,这两种方式都可以 此外,您的异步逻辑是反向的。它需要在异步时调用回调
function getData(async, callback) {
if (async) {
// get the data in async fashion
doAjaxCall(function(data) {
callback(data);
});
} else {
// get the data synchronously
callback(data);
}
}
作为一个有趣的参考,jQueryAjax函数是这样建模的。它有一个异步设计,在某些情况下可以传递一个参数来同步工作。同步ajax的用户体验效果非常负面,以至于它是一个非常糟糕的想法。同步ajax的用户体验效果非常负面,以至于它是一个非常糟糕的想法。