Javascript 在子函数完成运行后返回父函数

Javascript 在子函数完成运行后返回父函数,javascript,node.js,Javascript,Node.js,我目前面临的问题是,我不能让父函数等待子函数检索一些数据,然后让父函数返回数据 在我的例子中,子函数是on方法的回调 const parent = () => { ... let value; child.on('data', (data) => value = data); return value; } 我认为这里发生的是父函数在得到任何赋值之前返回值,从而使值等于未定义的。我确信我收到了所需的数据,因为当我在回调中记录data时,我得到了预期的输出 我

我目前面临的问题是,我不能让父函数等待子函数检索一些数据,然后让父函数返回数据

在我的例子中,子函数是
on
方法的回调

const parent = () => {

  ...

  let value;

  child.on('data', (data) => value = data);

  return value;
}
我认为这里发生的是父函数在得到任何赋值之前返回
,从而使
等于
未定义的
。我确信我收到了所需的数据,因为当我在回调中记录
data
时,我得到了预期的输出

我想做的就是让父函数返回子函数接收到的数据。我不完全确定从这里该怎么办


我非常感谢能得到的任何帮助。

一个快速的解决办法是将您的
家长
功能
更改为
承诺
。这样,您可以等待内部函数完成并返回结果

const父(子)=>{
返回新承诺((解决、拒绝)=>{
on('data',data=>{resolve(data);});
});
};
//用法
函数childFunction(){
// ...
返回“某物”;
}

父(childFunction).then(val=>console.log(val))
一个快速解决方案是将您的
父功能
更改为
承诺
。这样,您可以等待内部函数完成并返回结果

const父(子)=>{
返回新承诺((解决、拒绝)=>{
on('data',data=>{resolve(data);});
});
};
//用法
函数childFunction(){
// ...
返回“某物”;
}

父(childFunction).then(val=>console.log(val))这是否回答了您的问题?Oscar,mwilson提供了解决方案。承诺是通往这里的道路。这回答了你的问题吗?Oscar,mwilson提供了解决方案。承诺是实现这一目标的途径。我现在花时间真正理解了承诺是如何起作用的,而且效果很好。非常感谢。是的,他们很棒。您可以在没有承诺的情况下执行此操作,但基本上必须传入调用函数。承诺更值得一看。我现在花时间真正理解了承诺是如何起作用的,而且效果很好。非常感谢。是的,他们很棒。您可以在没有承诺的情况下执行此操作,但基本上必须传入调用函数。承诺更值得一看。