我用的是hedera-sdk-js, 2.37.0版,在NPM上从@hashgraph/sdk安装. ​

当我在NodeJS中运行脚本时,该进程将无限期地保持打开状态, 为了迫使它终止, 我一直在用process.exit(0);美元. 这是可行的,但并不理想--我更希望它优雅地结束. ​

有办法做到这一点吗? ​


详细信息:

以下是当前脚本 ​

import dotenv from 'dotenv';
import {
    Client,
    AccountId,
    PrivateKey,
} from '@hashgraph/sdk';
​
dotenv.config();
main();
​
async function main() {
    if (!process.env.ACCOUNT_ID ||
        !process.env.ACCOUNT_PRIVATE_KEY) {
        throw new Error('Please set required keys in .env file.');
    }
​
    const accountId = AccountId.fromString(process.env.ACCOUNT_ID);
    const accountKey = PrivateKey.fromStringECDSA(process.env.ACCOUNT_PRIVATE_KEY);
    const client = Client.forTestnet().setOperator(accountId, accountKey);
​
    // ... do some things here ...
​
    process.exit(0); // <-- NOTE would like to remove this
}
​

推荐答案

Client实例保持JavaScript事件循环打开. 为了优雅地关闭脚本, 你只需要停止Client实例,使用.close().

以下是代码示例的修改版本, 只有一行发生了更改:

import dotenv from 'dotenv';
import {
    Client,
    AccountId,
    PrivateKey,
} from '@hashgraph/sdk';

dotenv.config();
main();

async function main() {
    if (!process.env.ACCOUNT_ID ||
        !process.env.ACCOUNT_PRIVATE_KEY) {
        throw new Error('Please set required keys in .env file.');
    }

    const accountId = AccountId.fromString(process.env.ACCOUNT_ID);
    const accountKey = PrivateKey.fromStringECDSA(process.env.ACCOUNT_PRIVATE_KEY);
    const client = Client.forTestnet().setOperator(accountId, accountKey);

    // ... do some things here ...

    client.close() // Replaced process.exit with client.close
}

Javascript相关问答推荐

响应式JS DataTable中的Bootstrap 5弹出程序无法正常工作

JavaScript:循环访问不断变化的数组中的元素

TypScript界面中的Infer React子props

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

vscode扩展-webView Panel按钮不起任何作用

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

在Angular中将样式应用于innerHTML

将2D数组转换为图形

我可以从React中的出口从主布局调用一个处理程序函数吗?

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

try 使用javascript隐藏下拉 Select

使用getBorbingClientRect()更改绝对元素位置

为什么我的自定义元素没有被垃圾回收?

未加载css colored颜色 ,无法将div设置为可见和不可见

VSCode中出现随机行

变量在导入到Vite中的另一个js文件时成为常量.

如何修复使用axios运行TSC index.ts时出现的错误?

如何在独立的Angular 应用程序中添加Lucide-Angel?

ReferenceError:无法在初始化之前访问setData

如何在每隔2分钟刷新OKTA令牌后停止页面刷新