Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js在嵌套函数中设置变量_Node.js - Fatal编程技术网

Node.js在嵌套函数中设置变量

Node.js在嵌套函数中设置变量,node.js,Node.js,这里是Node.js新手。我正在用node red编写一个监视节点,并希望使用“node df”包来获取一些磁盘使用情况的数据。我将函数调用用作下面的代码,并希望将响应存储在函数范围之外的变量中。但是,响应并没有像我希望的那样存储在df_str变量中 节点df链接: 其中“node.warn()”函数调用在控制台中记录输出 df函数中的node.warn()将预期结果字符串记录到控制台,而最后一个node.warn()将“”记录在控制台中。如何在嵌套函数中设置df_str变量?您面临的挑战是由于

这里是Node.js新手。我正在用node red编写一个监视节点,并希望使用“node df”包来获取一些磁盘使用情况的数据。我将函数调用用作下面的代码,并希望将响应存储在函数范围之外的变量中。但是,响应并没有像我希望的那样存储在df_str变量中

节点df链接:

其中“node.warn()”函数调用在控制台中记录输出


df函数中的node.warn()将预期结果字符串记录到控制台,而最后一个node.warn()将“”记录在控制台中。如何在嵌套函数中设置df_str变量?

您面临的挑战是由于Javascript的异步特性。最后一个
节点.warn(df_str)
可能在df执行设置
df_str
的回调之前执行。关于如何在继续执行之前等待回调,存在许多问题。我相信这会让您走上正轨。

正如这里的大多数同事已经提到的,问题来自节点的异步特性。解决这个问题有多种方法。这里有一个建议:

var df = require("node-df");

const monitor_json = async (node, msg) => {
  const executeDf = () => {
    return new Promise((resolve, reject) => {
      df((error, response) => {
        if (error) reject(error);
        else resolve(response);
      });
    });
  };

  const df_str = await executeDf();
  node.warn(df_str);
};

monitor_json();

我需要询问最后一个
节点是否发出警告(df_str)df
之前调用了code>,如果是,则
df
是异步函数?如何检查df是否是异步函数?在控制台输出中,首先生成“”输出,然后生成预期输出。@Klaycon谢谢!作为新手,javascript的异步功能令人困惑。我感谢你的指导。是的,这项工作。谢谢。:)
var df = require("node-df");

const monitor_json = async (node, msg) => {
  const executeDf = () => {
    return new Promise((resolve, reject) => {
      df((error, response) => {
        if (error) reject(error);
        else resolve(response);
      });
    });
  };

  const df_str = await executeDf();
  node.warn(df_str);
};

monitor_json();