Javascript 使用knockout.js Ping站点

Javascript 使用knockout.js Ping站点,javascript,knockout.js,Javascript,Knockout.js,我想用javascriptping几个站点,找到这支笔,做我想做的事 然而,我不明白,当我把goo12121212gle.com添加到站点列表中作为测试时,它会说域已经响应了,但在控制台日志中我看到错误名称没有解决 我是JS新手,但我不确定为什么下面的脚本既说站点在那里,又不是同时在那里?脚本中缺少什么东西了吗 function ping(ip, callback) { if (!this.inUse) { this.status = 'unchecked';

我想用
javascript
ping几个站点,找到这支笔,做我想做的事

然而,我不明白,当我把
goo12121212gle.com
添加到站点列表中作为测试时,它会说域已经
响应了
,但在控制台日志中我看到
错误名称没有解决

我是JS新手,但我不确定为什么下面的脚本既说站点在那里,又不是同时在那里?脚本中缺少什么东西了吗

function ping(ip, callback) {

    if (!this.inUse) {
        this.status = 'unchecked';
        this.inUse = true;
        this.callback = callback;
        this.ip = ip;
        var _that = this;
        this.img = new Image();
        this.img.onload = function () {
            _that.inUse = false;
            _that.callback('online');

        };
        this.img.onerror = function (e) {
            if (_that.inUse) {
                _that.inUse = false;
                _that.callback('offline', e);
            }

        };
        this.start = new Date().getTime();
        this.img.src = "http://" + ip;
        this.timer = setTimeout(function () {
            if (_that.inUse) {
                _that.inUse = false;
                _that.callback('timeout');
            }
        }, 1500);
    }
}
var PingModel = function (servers) {
    var self = this;
    var myServers = [];
    ko.utils.arrayForEach(servers, function (location) {
        myServers.push({
            name: location,
            status: ko.observable('unchecked')
        });
    });
    self.servers = ko.observableArray(myServers);
    ko.utils.arrayForEach(self.servers(), function (s) {
        s.status('checking');
        new ping(s.name, function (status, e) {
            s.status(e ? "error" : status);
        });
    });
};
var komodel = new PingModel(['goo12121212gle.com','msn.com','104.46.36.174','23.97.201.12']);
ko.applyBindings(komodel);

OneError和onload回调都使用“responsed”作为消息,因此无法区分它们:

this.img.onerror = function (e) {
    if (_that.inUse) {
       _that.inUse = false;
       _that.callback('responded', e); // <--- change this to a different message
    }
};

OneError和onload回调都使用“responsed”作为消息,因此无法区分它们:

this.img.onerror = function (e) {
    if (_that.inUse) {
       _that.inUse = false;
       _that.callback('responded', e); // <--- change this to a different message
    }
};

谢谢你的回复,最后我们进行了更改,尝试了一下,但仍然无法让它工作(我已经更新了我的代码,所以你建议了什么,但仍然得到了回复)error@EmmaStone不可能,连一个“responsed”字符串都没有在新代码中。我想你忘了更新codepen版本。它应该可以像那样正常工作。谢谢你的回复,最后进行了更改以尝试它,但仍然无法正常工作(我已经更新了我的代码,所以你建议了什么,但仍然得到了回复)error@EmmaStone不可能,连一个“responsed”字符串都没有在新代码中。我想你忘了更新代码笔版本。它应该可以像那样工作。