由于我经常使用这种类型的电话,我希望这可以重复使用:
function getJSON(cmd){
$.getJSON(cmd, function(data) {
}).done(function(data) {
return data;
}).fail(function() { console.log('Server failed!') });
}
我希望像这样使用它:
function susbcribe(id){
var cmd = 'subscribe.php?='+id;
var obj = getJSON(cmd);
console.log(obj);
}
但是,在异步json甚至可以向obj返回任何内容之前,javascript运行console.log。
为了清楚 - 我知道我可以在.done()中执行代码,但因为我经常使用它,所以我希望不要一遍又一遍地重写相同的功能。
所以问题是:有没有办法让js停止并等待getJSON完成并返回一些东西给obj?
答案 0 :(得分:0)
目前的情况是,每次都必须至少编写done
函数。你不能假装它不存在来逃避回调地狱。
有一些方法可以通过巧妙地使用promise来避免使用promises,但是对于简单的事情,这很简单。直到2025年我们得到发电机/迭代器的支持。
您可以将fail
函数设置为全局“ajax事件”处理程序,以避免每次都输入错误处理。