我可以通过回调添加getJSON的done() - 函数吗?

时间:2015-01-02 06:05:30

标签: javascript jquery json asynchronous

关于此代码:

 function hello(){
     alert("hello");
 }
 function hi(){
     alert("hi");
 }

 jQuery.getJSON('foo.bar',function(data){
     if (data.foobar) {
         this.done(hello);
     }
     alert('callback done');
 }).done(hi);

并假设从foo.bar

返回
{"foobar":true}

我希望按此顺序收到提醒:

  1. 回调完成
  2. 你好
  3. 但我无法在done() - 回调中添加success - 函数。

    您是否有提示我如何在done() - 回调中添加success - 函数?

2 个答案:

答案 0 :(得分:1)

jqXHR对象是回调函数的第三个参数:

jQuery.getJSON('foo.bar', function(data, textStatus, jqXHR) {
    if (data.foobar) {
        jqXHR.done(hello);
    }
    alert('calback done');
}).done(hi);

答案 1 :(得分:0)

我认为你不应该首先尝试组合回调和done()处理程序,更不用说像这样交织它们了。只需使用一个done()处理程序:

jQuery.getJSON('foo.bar').done(function (data) {
    hi();
    if (data.foobar) {
        hello();
    }
});

或者,如果您担心hi()无法执行其他操作,则可以将其分别传递给done()

jQuery.getJSON('foo.bar').done(hi, function (data) {
    if (data.foobar) {
        hello();
    }
});