如何将回调代码转换为Promise格式?

问题描述 投票:-1回答:1

我已手动成功地通过端口linux345远程登录到2345。这意味着以下代码应将输出显示为0

但是,代码输出返回1。似乎将callback转换为async promise格式将有助于解决此问题。请提出更新后的代码的外观。

const net = require('net');

const HOST = 'linux345';
const PORT = 2345;
let ErrCode = 1;

const client = new net.Socket();

client.connect(PORT, HOST, function() {
    ErrCode = 0;
});

client.on('data', function(data) {    
    console.log('Client received: ' + data);
     if (data.toString().endsWith('exit')) {
       client.destroy();
    }
});

client.on('close', function() {
});

client.on('error', function(err) {
    ErrCode = err.code;
    console.log(ErrCode);
});

console.log(ErrCode);
javascript node.js promise async-await angular-promise
1个回答
0
投票
let ErrCode = 1;

const client = new net.Socket();

const connect = util.promisify(client.connect);

async function testFun() {
    try {
        let data = await connect(PORT, HOST);
        ErrCode = 0;
        console.log('Client received: ' + data);
        if (data.toString().endsWith('exit')) {
            client.destroy();
        }
    }
    catch (ex) {
        ErrCode = -1;
    }
}

testFun().then(() => {
    console.log(ErrCode)
}
)

使用util.promisify

采用遵循常见错误优先回调样式的函数,即以(err,value)=> ...回调作为最后一个参数,并且返回一个返回promise的版本。

© www.soinside.com 2019 - 2024. All rights reserved.