Javascript “之后”;“允诺”;net ping在超时后解决火灾,而不是立即解决
使用节点网络ping,版本:1.2.3 想要将包转换为Promise,但我的“resolve”仅在延迟2秒后才启动。 代码如下: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,
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);
});