将$ .getJSON转换为通用函数

时间:2013-10-08 22:32:42

标签: javascript jquery json getjson

由于我经常使用这种类型的电话,我希望这可以重复使用:

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?

1 个答案:

答案 0 :(得分:0)

目前的情况是,每次都必须至少编写done函数。你不能假装它不存在来逃避回调地狱。

有一些方法可以通过巧妙地使用promise来避免使用promises,但是对于简单的事情,这很简单。直到2025年我们得到发电机/迭代器的支持。

您可以将fail函数设置为全局“ajax事件”处理程序,以避免每次都输入错误处理。