javascript - 让 JS 函数执行简单的 AJAX true/false 请求并返回结果的最佳方法是什么

标签 javascript jquery ajax promise

让 JS 函数执行简单的 AJAX true/false 请求并返回结果的最佳方法是什么。

我想在 JS 函数中执行一个简单的 AJAX 请求,检查用户 session 是否仍处于事件状态。该函数应等待 AJAX 请求完成并返回 true 或 false。

我使用 setInterval 实现了这一点但我不认为这是最好的方法。我尝试使用 jQuery $.when但我无法让函数返回结果。

function checkSessionIsStillActive(){
    var result; //ajax result will be put in here. It will be undefined until ajax complete

    $.getJSON('application/app_cfc/session_check.cfm/ajax')
    .done(function( data ) {
        // return the value
        result = data.session_active;
    }); 

    // Do an interval loop check until the result is defined
    var interval_check = setInterval(function(){        
        // Return the result as soon as we have it
        if(result != undefined ){

            // Clear this interval loop
            clearInterval(interval_check);
            // return the result to the calling function
            return result;
        }
    }, 100);
}

最佳答案

您应该阅读有关异步 JavaScript 的内容,尤其是 Promise .

function checkSessionIsStillActive(){
    return new Promise((resolve, reject) => {
        $.getJSON('application/app_cfc/session_check.cfm/ajax')
            .done(data => {
                // return the value
                result = data.session_active;
                resolve(result);
            }); 
    });
}

如果你调用该函数,你就会执行

checkSessionIsStillActive().then(data => {
    // result from function is available here
});

关于javascript - 让 JS 函数执行简单的 AJAX true/false 请求并返回结果的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481246/

相关文章:

javascript - AJAX 初始化中的三元运算符未正确设置

javascript - 扩展 Controller 组件 - angularjs

javascript - Javascript 数组中匹配属性的总和值

javascript - 重用 jQuery 选择元素的最有效方式

javascript - 在页脚停止固定位置

Javascript:如何判断 AJAX 响应是否为 JSON

jquery - jQuery的empty()和remove()函数是否异步执行?

javascript - 根据背景图像更改文本颜色

javascript - 从 React 前端 POST 到 API 不起作用 - 错误 400

javascript - 我怎样才能正确使用 jQuery 来修复这个 fencepost 案例?