【问题标题】:nodeJS asynchronous processingnodeJS 异步处理
【发布时间】:2022-01-12 04:26:33
【问题描述】:
mCon = false;
 
function login()  {
    var sCmd = "...";
    mCon = false;
    SendCmdSocket(sCmd);
 
    console.log("### mCon : " + mCon); <-- Here
}
 
function SendCmdSocket(sCmd)  {
    var success = socket.write(sCmd);
}
 
socket.on('data', function(chunk) {
    OnReceive(chunk);
});
 
function OnReceive(chunk) {
    mCon = true;
}

login();

记录console.log时如何让mCon值为真?

我想在收到套接字结果后继续代码。

【问题讨论】:

    标签: node.js sockets


    【解决方案1】:

    试试这个希望对你有帮助

    mCon = false;
    
    async function login()  {
    var sCmd = "...";
    mCon = false;
    await SendCmdSocket(sCmd);
    
    console.log("### mCon : " + mCon); <-- Here
    }
    
    async function SendCmdSocket(sCmd)  {
        return new Promise((resolve, reject) => {
          socket.write(sCmd)
         if(mCon){
           resolve()
          }
        })
     }
    
    socket.on('data', function(chunk) {
    OnReceive(chunk);
    });
    
    function OnReceive(chunk) {
    mCon = true;
    }
    
    login();
    

    【讨论】:

    • 还是假的.. THX
    • 我已经更新了代码,请尝试告诉我
    • 发生错误.. (node:176084) UnhandledPromiseRejectionWarning: TypeError: socket.write(...).then is not a function
    • (使用node --trace-warnings ... 显示警告的创建位置)(节点:176684)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:2)
    • (node:176684) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
    猜你喜欢
    • 2019-10-01
    • 2013-03-19
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多