擅长:python、mysql、java
<p>你没有解释javascript的异步特性。您需要做的是,将回调方法传递给<code>crawlData</code>方法,一旦完成了刮取,就会调用该方法。你知道吗</p>
<pre><code>exports.crawlData = (cb)=>{
....
py.stdout.on('data', function(result){
var dataArr = encoding.convert(result, 'utf-8')
dataArr = JSON.parse(encoding.convert(result, 'utf-8'));
py.stdout.on('end', function(){
cb(dataArr); // ideally the pattern is cb(error, data)
});
});
...
</code></pre>
<p>所以<code>server.js</code>变成:</p>
<pre><code>var crawler = require("./crawling")
crawler.crawlData((data) => {
console.log(data);
// Do whatever you want to do with the data.
});
</code></pre>
<p>回调可能导致<a href="http://callbackhell.com/" rel="nofollow noreferrer">Callback hell</a>。尝试探索<code>promises</code>或<code>async</code>/<code>await</code>。你知道吗</p>