是否可以拒绝在管道中延迟的jquery

时间:2014-03-17 09:04:18

标签: jquery jquery-deferred

是否可以拒绝管道内的延期?

我想这样做:

function doPostStuff(sentData){
        return $.post("postStuff.foo", sentData)
        .pipe(function(returnedData){
            if (returnedData.justDoIt != "YEAH BABY oO") {
                return $.Deferred().reject('Error posting stuff', returnedData);
            }
            var finalData = transformResults(returnedData);
            return finalData;
        });  
    }

然后这样打电话:

doPostStuff(someData)
    .done(function(finalData){
        alert("you are here ! ");
    })
    .fail(function(message, failData){
        alert(message);
    });

但由于某些原因,我从未达到失败()。

我做错了吗?

谢谢!

EDIT。

所以我的代码没有错,毕竟它是服务器端问题。

只是为了证明我的观点,并证明请求仍然是异步的,尽管下面回答的人(在回答之前显然没有阅读Deferred详细信息的文档)是假装的:

doDeferredTest : function(){
    return $.post("doMiniTest.foo")
        .pipe(function(erb){
            console.error("inside pipe at " + Date());
            if(erb.status != 'SUCCESS'){
                return $.Deferred().reject('Error posting stuff', erb);
            }
            return erb;
    });
},



    var done = false;
    console.error("triggereing Do deffered test at " + Date()); 
    doDeferredTest().done(function(){
        done = true;
        console.error("inside done at " + Date());  
    })
    .fail(function(){
        console.error("failed at " + Date());

    });
    console.error("after doDeferredTest triggered " + Date() + " done = " + done);  

如果延迟服务器响应,您应该在控制台中看到请求确​​实是异步的,并且失败在管道内正确触发。与下面的预备相反,不需要中间偏转的对象,因为$ .post返回一个可以与其他自定义方法链接的承诺。

0 个答案:

没有答案