2016-06-19 47 views
0

我使用Express框架。如何在节点js中同步运行异步功能

我面临的问题是我创建了一个var持续时间,当收到'/'的请求时,它只是找到给定视频的总持续时间并保存到该变量,但最终我想表明可变的,但不是表明变量值就显示什么,并在未定义显示控制台...

任何人都可以请帮我囤这个代码同步,而不是异步...

非常感谢

This is my code

回答

1

来处理,你需要把

console.log(duration); 
res.send(duration); 

exec回调内部的异步代码。

修改后的代码:

var duration; 
app.get('/', function(req, res){ 
    exec('ffprobe -1 ***', function(){ 
     if(stdout){ 
      duration = stdout; 
      console.log(duration); 
      res.send(duration); 
     } 
    }); 
}); 
+1

这解决了问题,但它是值得一提的是它并没有“使代码同步”。它修复了以前不正确的异步处理。 – Robbie

+0

感谢您的更正@Robbie - 是的!该代码仍然是异步的,现在它只是正确处理。 (编辑答案) –