.then()不是返回jQuery promise时抛出的函数

时间:2017-05-03 00:56:49

标签: javascript jquery

我有createUserData()功能:

createUserData(user) {
    const dfd = new $.Deferred();
    $.ajax({
        url: './awesome/user',
        type: 'POST',
        dataType: 'json',
        data: user,
    })
    .then((response) => {
        dfd.resolve(response);
    })
    .fail((xhr) => {
        // do stuff with errors
        dfd.reject(errorMsg);
    });

    return dfd.promise;
}

我希望能够在任何地方召唤它......

createUserData(user).then((response) => {
    // do more stuff with that response
    // fire off other functions
    // But I can't get here...
});

我得到createUserData(...).then() is not a function。我使用承诺错了吗?我不明白,我在我的功能中回复了承诺。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要调用promise方法:

return dfd.promise();

答案 1 :(得分:0)

你可以直接返回$ .ajax并使用.done()和.fail()连接它。

在您的代码中,问题应该是

return dfd.promise();