首页 > 解决方案 > 为什么使用 JQuery AJAX 会阻止这个承诺链工作?

问题描述

当我使用此函数进行 AJAX 调用时,return2 的值是一个未履行的承诺,会立即打印出来,then() 函数在继续之前不会等待它被履行。

$.ajax({
    url: `/security/csrf`,
    type: 'POST',
}).then((data) => {
    console.log(data)
    return new Promise((resolve, reject) => {
        setTimeout(() => {resolve("DONE")}, 10000)
    })
}).then((return2) => {
    console.log(return2)
})

但是,当我创建一个承诺并解决它时,result2 的值在 10 秒延迟后如预期的那样是“DONE”

new Promise((resolve, reject) => {
    resolve("HERE");
}).then((data) => {
    console.log(data);
    return new Promise((resolve, reject) => {
        setTimeout(() => {resolve("DONE")}, 10000)
    })
}).then((result2) => {
    console.log(result2)
})

我知道 AJAX 调用已成功解析,因为当我运行以下命令时,它会正常记录数据并且不会记录错误

$.ajax({
    url: `/security/csrf`,
    type: 'POST',
}).then((data) => {
    console.log(data);
}, (err) => {
    console.error(err);
})

标签: javascriptjqueryajaxpromise

解决方案


推荐阅读