我很难缠着jQuery中的延迟对象。

例如,

我以为我可以使用以下语法,但是当成功发生时,这实际上同时运行成功和失败。我以为失败只会在ajax调用失败的情况下运行?

checkFoo(widget)
.success(step1, step2)
.fail(alert("failed"));


checkFoo是一个像这样的AJAX调用

function checkFoo(widget){
   return $.ajax({
          url: "foo.php",
          data: widget,
          format: json
   });
}

最佳答案

您的密码

checkFoo(widget)
.success( step1(), step2() )
.fail( alert("checkfoo failed") );


立即调用step1step2alert,并将它们的返回值传递给successfail方法。就像

foo(bar());


...调用bar并将其返回值传递到foo

如果要告诉jQuery成功调用step1step2,而失败则执行alert,则传入函数引用:

checkFoo(widget)
.success( step1, step2 )      // <== No parens, `step1` refers to a *function*
.fail( function() {           // <== Wrap a function around the alert
    alert("checkfoo failed");
});

关于javascript - jQuery延迟对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14062702/

10-11 12:31