javascript - 为什么使用 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);
})
解决方案
推荐阅读
- google-bigquery - 从嵌套对象数组中选择行并删除具有某些匹配列的行
- java - Homebrew 在 Macbook pro m1 上找不到 openjdk
- javascript - .push() 在 throw 下不起作用,使用 async await 方法在 javascript 中循环获取数据
- python - 是否有任何 OpenCV 或 Tensorflow 方法可以将两个非常模糊的图像分类为“白色”或“黑色”?
- c++ - 启用 c++20 编译时 clang-tidy 发出警告
- python - 如何使用 alpha_composite 合成图像,但设置蒙版的不透明度?
- python - 熊猫数据框中 2 列的值计数
- javascript - 您将如何创建一个从列表中添加随机数以达到某个值的函数?
- java - JDA 无法发送消息
- flutter - 与@require相反?(镖)