获取时间 Javascript

Get the time in Javascript

我想获取Javascript/Jquery的当前时间。

我可以只使用 Math.floor($.now() / 1000),但这将 return 来自浏览器的时间可能是准确的,但可能在错误的时区。我在我的服务器上设置了文件 time.php,访问时 returns 是正确时区的当前 unix 时间戳。现在我需要做的就是将其放入 Javascript。我考虑过使用这样的 jquery 函数:

    function time(){
        $.ajax({url: "time.php", success: function(result){
            return(result);
        }});
    }
    alert(time());

但这似乎不起作用,因为函数返回时未定义。有没有解决方案可以让我调用 alert(time());?

这是一个异步调用: $.ajax({url: "time.php", success: function(result){

这意味着在您的 return 实际上 return 发送您的数据之前调用警报。因此,当警报为 运行 时,没有 return 值,这解释了 'undefined'。

我建议您阅读 this post 上的最佳答案,而不是详细解释它,它很好地解释了您遇到的问题,可能比我所能收集的要好。

AJAX 调用本质上是异步的。您需要将逻辑放在回调中。有很多方法可以处理。

在成功回调中放置逻辑

function time(){
    $.ajax({url: "time.php", success: function(result){
        // Place your business logic here
    }});
}
time();

传递回调

function time(callback){
    $.ajax({url: "time.php", success: function(result){
        callback(result);
    }});
}
time(function (result) {
    // Place your business logic here
});

您甚至可以通过

对其进行优化
function time(successCB){
    $.ajax({url: "time.php", success: successCB});
}
time(function (result) {
    // Place your business logic here
});

使用承诺

Promises 是实验性技术,是 ES6 的一部分。

function time(){
    var promise = new Promise(function (resolve, reject) {
        $.ajax({url: "time.php", success: function(result){
            resolve(result);
        }});
    });

    return promise;
}

time().then(function (result) {
    // Place your business logic here
});