【问题标题】:Nested javascript promises嵌套的 JavaScript 承诺
【发布时间】:2017-08-24 16:10:33
【问题描述】:

我有一个基于其结果的 AJAX 调用 - 我发送另一个调用。

uploadDocument = function (doc1, doc2) {
    $.ajax({
        type: "POST",
        url: "/API/UploadDocs/addDocument",
        data: doc1,
        contentType: "application/json"
    }).then(function (result) {
        console.log(result);
        doc2.id=result;
        return $.ajax({
            type: "POST",
            url: "/API/UploadDocs/addDocument",
            data: doc2,
            contentType: "application/json"
        }).then(function (result) {
        });
    });
}

但我收到Illegal invocation 错误,我做错了什么?

【问题讨论】:

  • @smarber 这不是重复的,我看到了这个问题,但没有找到我的问题的答案,谢谢。

标签: javascript


【解决方案1】:

你做错了承诺链!当您返回一个承诺时,您必须继续使用 then 调用您正在解决的承诺。

阅读链接部分:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

uploadDocument = function (doc1, doc2) {
    $.ajax({
        type: "POST",
        url: "/API/UploadDocs/addDocument",
        data: doc1,
        contentType: "application/json"
    }).then(function (result) {
        console.log(result);
        doc2.id=result;
        return $.ajax({
            type: "POST",
            url: "/API/UploadDocs/addDocument",
            data: doc2,
            contentType: "application/json"
        });
    }).then(function (result) {
      //Continue here
    });
}

【讨论】:

    【解决方案2】:

    通过 AJAX 传递的数据出现错误时会出现非法调用错误

    检查 doc1 和 doc2 的类型。同时尝试将 processData:false 传递给 ajax。

    【讨论】:

    • 谢谢,当我调用uploadDocument函数时,我发送了一个错误的参数,谢谢!
    • 很高兴我能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多