0

由于我经常使用这种类型的调用,我希望使其可重用:

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);    
}

但是 javascript 在异步 json 甚至可以将任何内容返回给 obj 之前运行 console.log。

为了清楚起见 - 我知道我可以在 .done() 中执行代码,但是因为我经常使用它,所以我希望放弃一遍又一遍地重写相同的函数。

所以问题是:有没有办法让 js 停止并等待 getJSON 完成并返回一些东西给 obj ?

4

1 回答 1

0

按照目前的情况,您至少done每次都必须编写函数。你无法通过假装它不存在来逃避回调地狱。

有一些方法可以通过巧妙地使用 Promise 来避免其中的一些,但对于简单的事情,这几乎是最简单的。直到我们在 2025 年的某个时候获得对生成器/迭代器的支持。

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

于 2013-10-08T22:36:22.197 回答