【问题标题】:How to get promise to resolve for tcpPortUsed NodeJS如何获得解决 tcpPortUsed NodeJS 的承诺
【发布时间】:2018-10-16 05:52:54
【问题描述】:

我正在编写一个 NodeJS 应用程序,带有一个名为 tcpPortUsed (https://www.npmjs.com/package/tcp-port-used) 的模块,使用它的示例是

var tcpPortUsed = require('tcp-port-used');

tcpPortUsed.check(44201, '127.0.0.1')
.then(function(inUse) {
console.log('Port 44201 usage: '+inUse);
}, function(err) {
console.error('Error on check:', err.message);
});

这运行异步,而不是我想要的,我需要从这个变量中获取响应,以供我在应用程序中的下一行使用。我已经阅读了承诺,你可以在异步函数中使用 await 来让它返回,但是这个 tcpPortUsed 函数似乎没有任何作用,我发现它确实返回了一个承诺,但是无论我做什么,它都不会返回,到目前为止我得到的最好的结果是 promise 挂起到一个变量中,任何人都可以提供代码来从这个 tcp-port-used 函数获取返回的非异步响应吗?

【问题讨论】:

  • “这是异步运行的,而不是我想要的” - 异步检查绝对是您想要的,这不是问题。如果有办法避免,不要编写非异步代码。你的代码根本不打印任何东西吗?
  • 是的,上面的代码在控制台中输出“端口 44201 使用情况:真”,但是由于它是异步的,我无法将此输出转换为变量。我正在研究的解决方案是一个监控脚本,因此首先检查端口是否可用,然后更新输出到网页的 json 请求的一部分。问题是当我在我的应用程序的一部分中输出 json 时,这个函数还没有返回任何东西。我想让它先运行这个函数,回来说它正在使用,然后执行下一行代码。
  • “下一行代码”在回调内部。想一想。

标签: node.js


【解决方案1】:

我最终通过在此之后使用我的函数完成了此操作,并对其进行了 2 秒的超时延迟,因此到那时响应已经返回,只有这样我才能使其正常工作。

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-10-28
    • 2021-11-26
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多