【问题标题】:Javascript promise execution timeJavascript 承诺执行时间
【发布时间】:2017-02-27 18:19:19
【问题描述】:

我有 JS 函数,它基本上定期调用服务器并尝试它是否仍然在线,我想显示这个函数的执行时间(类似于“ping”)

function preventOfflinePayment() {

            new Model('orgis.eet').call("pos_check_server_connection",{},undefined, {
                shadow: false,
                timeout: 2000
            })
                .done(function () {
                    $(".next").show();
                    $("#eet-status").css('color', 'limegreen');
                    $("#ping").html("Time: " + something);
                })
                .fail(function () {
                    $(".next").hide();
                    $("#eet-status").css('color', 'red');

                });

            _.delay(function () {
                preventOfflinePayment();
            }, 1000);
        }

我不知道是否可以计算这个。你能提出一些建议吗?

【问题讨论】:

  • 您可以在调用 new Model ... 之前使用 MomentJS 获取时间戳(以毫秒或微秒为单位),然后在 done 和失败中获取另一个时间戳,并检查时间差异。
  • 我认为您无法正确计算联系服务器需要多长时间。您可能仍会显示通知,即您正在更新状态,但不会显示何时结束。您仍然可以在 jQuery Ajax 中设置 timeout 参数来设置最大执行时间。

标签: javascript promise


【解决方案1】:

也许是这样的:

function preventOfflinePayment() {
    var start = Date.now();
    var stop;
    new Model('orgis.eet').call("pos_check_server_connection",{},undefined, {
        shadow: false,
        timeout: 2000
    })
    .done(function () {
        stop = Date.now();
        var timeout = (stop - start) / 1000; // in ms
        $(".next").show();
        $("#eet-status").css('color', 'limegreen');
        $("#ping").html("Time: " + timeout + ' ms');
     })
     .fail(function () {
        stop = Date.now();
        var timeout = (stop - start) / 1000; // in ms
        $(".next").hide();
        $("#eet-status").css('color', 'red');
        console.log(timeout)
     });

     _.delay(function () {
       preventOfflinePayment();
     }, 1000);
}

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多