Javascript ajax同步请求不起作用

标签 javascript jquery ajax

我正在对我的网站发出连续的 AJAX 请求。有 2 个 POST 请求。第二个请求应在第一个请求完成后处理。我的代码如下:

$.ajax({
    type: 'POST',
    url: '/backend/edge/enableNewAgent/',
    async: false,
    success: function () {
        console.log("First Process Done");
    }
});
$.ajax({
    type: 'POST',
    url: '/backend/edge/deleteOldAgent/',
    async: false,
    success: function () {
        console.log("Second Process Done");
    }
});

第二个进程在第一个进程之后完成,但控制台日志记录是在第二个进程完成后执行的,而不是在第一个进程完成后执行的。我希望 console.log 在第一个进程完成后立即执行,然后继续执行第二个进程。有人可以帮忙吗?

最佳答案

如果您想编写同步“查看”代码并避免同步 XMLHttpRequest - 您可以使用 async/await

async function doAjax() {
    await $.ajax({
        type: 'POST',
        url: '/backend/edge/enableNewAgent/',
        success: function() {
            console.log("First Process Done");
        }
    });
    await $.ajax({
        type: 'POST',
        url: '/backend/edge/deleteOldAgent/',
        success: function() {
            console.log("Second Process Done");
        }
    });
}

实际上,这样做更好

async function doAjax() {
    await $.ajax({
        type: 'POST',
        url: '/backend/edge/enableNewAgent/'
    });
    console.log("First Process Done");
    await $.ajax({
        type: 'POST',
        url: '/backend/edge/deleteOldAgent/'
    });
    console.log("Second Process Done");
}

注意,它必须在一个函数内完成(不必是像这样的单独函数,只需将其放在那里以强制执行该想法... await 仅在 异步函数)

关于Javascript ajax同步请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52833321/

相关文章:

javascript - 在 jquery datepicker 的标题中显示当前日期

javascript - 是否可以使用 extjs 在组内进行分组?

javascript - 如何将灯箱添加到网页链接

javascript - 图像拉伸(stretch)和裁剪以适合精确尺寸

javascript - 我如何在单个标签中使用两个 data-min 和 data-max 属性

java - 如何在没有提交表单的情况下使用ajax将数据发送到servlet

javascript - 使用 node.js 进行基本 Ajax 发送/接收

javascript - 什么是 Javascript [[Environment]] 属性?

Javascript 模块模式 - 失去范围

jquery - 使用jquery拉取 'next'内容