延迟代码使用失败/已完成但未使用

时间:2015-12-23 11:23:58

标签: javascript jquery promise deferred

我有一个名为func1的函数正在调用var dfd = $.ajax,并返回dfd.promise(),现在在我的main函数中,我有这样的代码:

function addOperation() {
   var addPromise = func1();
   addPromise.then(
     function(sender, args, msg) {
       alert("success");
     },

     function() {
       alert("fail");
     });
 }

以上代码无效,对我有用的是:

function addOperation() {
  var addPromise = func1();
  addPromise.fail(
      function(sender, args, msg) {
        alert("fail");
      })
    .done(
      function() {
        alert("success");
      });
}

从我的理解是,那么(functionSuccess,functionFail)与原来的promise上调用.done和.fail是一样的,不是吗?我迷失了。

2 个答案:

答案 0 :(得分:1)

您不应该从您的函数返回dfd.promise()$.ajax 的返回值是承诺。

直接返回dfd(或$.ajax的结果)

docs说得最好:

  

jQuery 1.5中$ .ajax()返回的jqXHR对象实现了Promise接口,为它们提供了Promise的所有属性,方法和行为(有关更多信息,请参阅Deferred对象)。这些方法接受一个或多个函数参数,这些参数在$ .ajax()请求终止时被调用

答案 1 :(得分:0)

$.ajax返回的jqXHR对象实现了Promise接口。

  

jQuery 1.5中$ .ajax()返回的jqXHR对象实现了   Promise接口,为它们提供所有属性,方法和   Promise的行为(有关详细信息,请参阅Deferred对象)。

因此,func1应该只返回<exec executable="src/main/webapp/bin/webdriver.bat" failonerror="true" resultproperty="return.code"> <arg line="${ccc}/eeee--report-format JSON --report-file testResultserer/resultere-data/wwwww.json"/> </exec> (1) 返回的值。