首页 > 解决方案 > 子函数运行完毕返回父函数

问题描述

我目前面临这个问题,我无法让父函数等待子函数检索一些数据,然后让父函数返回数据。

在我的情况下,子函数是该 on方法的回调。

const parent = () => {

  ...

  let value;

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

  return value;
}

我认为这里发生的是父函数value在它得到任何分配之前返回,因此value等于undefined. 我确信我正在接收所需的数据,因为当我data在回调中登录时,我得到了预期的输出。

所以我想做的就是让父函数返回子函数接收到的数据。我不完全确定如何从这里开始。

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

标签: javascriptnode.js

解决方案


一个快速的解决方案是将您的更改parent functionpromise. 这样,您可以等待内部函数完成并返回结果

const parent (child) => {
  return new Promise( (resolve, reject) => {
    child.on('data', data => { resolve(data); });
  });
};

// Usage
function childFunction () {
  // ...
  
  return 'something';
}
parent(childFunction).then( val => console.log(val) );


推荐阅读