Javascript “之后”;“允诺”;net ping在超时后解决火灾,而不是立即解决

Javascript “之后”;“允诺”;net ping在超时后解决火灾,而不是立即解决,javascript,node.js,promise,Javascript,Node.js,Promise,使用节点网络ping,版本:1.2.3 想要将包转换为Promise,但我的“resolve”仅在延迟2秒后才启动。 代码如下: const ping = (host: string) => { let session = netPing.createSession(); return new Promise<string | object>((resolve, reject) => { session.pingHost( host,

使用节点网络ping,版本:1.2.3

想要将包转换为Promise,但我的“resolve”仅在延迟2秒后才启动。 代码如下:

const ping = (host: string) => {
  let session = netPing.createSession();
  return new Promise<string | object>((resolve, reject) => {
    session.pingHost(
      host,
      function (
        error: NodeJS.ErrnoException,
        host: string,
        sent: number,
        rcvd: number
      ) {
        if (error) reject(error.toString());
        else
          resolve({
            host: host,
            recivedTime: rcvd,
            sentTime: sent,
            delta: rcvd - sent,
          });
      }
    );
  });
};

但响应在2秒延迟后返回。我遗漏了什么吗?

ping函数正在解析还是拒绝?因为2秒是网络ping的默认超时。可能网络请求在2秒后超时,拒绝了承诺。承诺正在解决。没有任何原因(从示例代码中可以看到)会使承诺延迟2秒解决。如果一个普通的
session.pingHost()
按照您期望的方式工作,那么promisified版本也应该这样做。
router.get('/ping/:host', async (req, res) => {
  let result = await ping(req.params.host);
  res.json(result);
});