1 回答

TA貢獻1869條經驗 獲得超4個贊
腳本中有一些錯誤:
async
不打電話await
是沒有用的通常使用回調來代替
await
,不能同時使用通用回調接口是
callback(error, data)
,所以你應該遵循這個模式
所以你的腳本應該更新如下。
請注意,這是一個無法管理錯誤的快速解決方案?。ㄓ置?code>error事件)
const status = require('net')
const util = require('util')
const hosts = [
['Server #1', 'google.com', 80],
['Server #2', 'jhfg87ed4.com', 80], // fake, just for response check
['Server #3', 'stackoverflow.com', 80]
]
function server (id, cb) {
const host = hosts[id]
const sock = new status.Socket()
sock.setTimeout(2500)
sock
.on('connect', () => {
cb(null, host[0] + ': Up.') // null as first parameter that is error
sock.destroy()
})
.on('error', e => {
cb(new Error(host[0] + ': Down: ' + e.message))
})
.on('timeout', e => {
cb(new Error(host[0] + ' Down: timeout'))
})
.connect(host[2], host[1])
}
const serverPromise = util.promisify(server)
async function results () {
let res = await serverPromise(0)
console.log(res)
try {
res = await serverPromise(1)
console.log(res)
} catch (error) {
console.log(error)
}
res = await serverPromise(2)
console.log(res)
}
results()
添加回答
舉報