javascript - Jquery Deferred.resolve不传递参数

标签 javascript jquery promise jquery-deferred

我 promise 如下代码。在我用参数解决了promise之后, 我想在done()方法中获取参数。

function splitAndSetTebiskopUrl(tebiskopUrl){
    splits = tebiskopUrl.split("\u0007");
    tebiskopUrl = splits[0];
    var defer = $.Deferred();
    if(splits[1]){
        var cookieValue = splits[1];

        return $.ajax({
            type:'POST', 
            url:'xxxxxxxxxxxx', 
            data:{'cookieValue':cookieValue},

        }).then(function(data){
            if(data && data.cookieValue){
                defer.resolve(tebiskopUrl);

            }else{
                defer.reject("cookie value doesn't exist");
            }
        },
          function(){
            defer.reject("tebiskopCookieSet request error");
        });

    }else{
        defer.resolve(tebiskopUrl);
    }

    return defer.promise(); 
}

参数未传递给done()方法。不幸的是我认为它是未定义的。我看了很多例子。但我找不到问题所在。

splitAndSetTebiskopUrl(url).done(function(parameter){
                //parameter is undefined
             });

最佳答案

if block ,你是return来自束缚的 promise then来电- promise defer您解决的问题不会返回此处。您可以忽略 return关键字和代码可以工作,但实际上你应该避免 deferred antipattern实际上只是从链中返回 promise :

function splitAndSetTebiskopUrl(tebiskopUrl){
    var splits = tebiskopUrl.split("\u0007");
    tebiskopUrl = splits[0];
    if (splits[1]) {
        return $.ajax({
            type:'POST', 
            url:'xxxxxxxxxxxx', 
            data:{'cookieValue': split[1]},
        }).then(function(data){
            if (data && data.cookieValue) {
                return tebiskopUrl;
            } else {
                throw new Error("cookie value doesn't exist");
            }
        }, function(err) {
            throw new Error("tebiskopCookieSet request error");
        });
    } else {
        return $.when(tebiskopUrl);
    }
}

关于javascript - Jquery Deferred.resolve不传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376375/

相关文章:

javascript - JS 中处理 Object 的嵌套属性

javascript - 无法更改 Fancybox 关闭按钮

javascript - Rails 4、turbolinks 和 Coffeescript

javascript - 如何使用javascript动态地将json数组传递给数据表

javascript - 当我点击一张图片时,将这张图片放在 DIV 的背景中

javascript - 这种 promise 嵌套是好的做法吗?

javascript - 等待所有步骤成功或失败的异步步骤

javascript - knockout .js : manually trigger computed

Javascript 通过 parent ID 选择 child

javascript - 迭代 Promise 迭代器的非递归方法