最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin8浏览0评论

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

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

我已手动成功地通过端口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);
回答如下:
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的版本。

发布评论

评论列表(0)

  1. 暂无评论