使用 jQuery 的异步函数和 AJAX 请求 [已关闭]

Asynchronous function and AJAX request with jQuery [closed]

提问人:Domenico 提问时间:10/18/2023 最后编辑:Mark RotteveelDomenico 更新时间:10/19/2023 访问量:53

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

上个月关闭。

此帖子在上个月经过编辑并提交审核,但未能重新打开该帖子:

原始关闭原因未解决

如果我第二次在侦听器中调用异步函数(没有“let”),我会收到以下错误:

未捕获(在 promise 中)TypeError:updatePromoList 不是函数

如果我有“let”到“updatePromoList”变量,则会出现以下错误:

未捕获(在 promise 中)ReferenceError:初始化前无法访问“updatePromoList”

我使用SmartAdmin模板。

目标是仅在 AJAX 请求完成后才从函数接收 true 或 false。

我的代码:

async function updatePromoList() {
    var request_status = false;

    await $.ajax({
        type: 'POST',
        url: 'https...',
        data: {},
        success: function (data) {
            request_status = true;
        },
    });

    return request_status;
}

$('#.select2').on('select2:select select2:unselect', async function(e) {
    // let (yes or not...)
    let updatePromoList = await updatePromoList();
    if (!updatePromoList) {
        // code
    }
});

溶液:

let updatePromoListCheck;
updatePromoListCheck = await updatePromoList();
if (updatePromoListCheck) {...}
JavaScript jQuery Ajax 异步

评论

4赞 Pointy 10/18/2023
您的代码将覆盖全局 .updatePromoList
0赞 Quentin 10/19/2023
重新编辑:现在您正在尝试调用哪个是尚未为其赋值的局部变量。updatePromoList
1赞 Quentin 10/19/2023
不要遮蔽变量。当您这样做时,请使用 linting 工具来警告您
3赞 Barmar 10/19/2023
很简单:不要对变量和函数使用相同的名称。
0赞 freedomn-m 10/19/2023
let updatePromoList = await updatePromoList(); if (!updatePromoList)更改为let updatePromoListResult = await updatePromoList(); if (!updatePromoListResult)

答: 暂无答案