2016-07-06 52 views
0

我在简单的路线中使用PSI npm软件包。 https://github.com/addyosmani/psi 使用库中的psi方法。但是,脚本不会等待预期的结果。它在控制台中正常工作。但是,我需要将响应返回给浏览器并将其显示在那里。我怎样才能做到这一点? 注:磅方法一个承诺。如何从路由中的节点返回从PageSpeed Insight接收到的数据?

app.get('/psi', function(req, res){ 
    res.type('text/html'); 
    return psi('example.com',{ key: '*Iz*Sy*****PiZ***wz7****sy*****', strategy: 'desktop'}).then(data => { 
     console.log('Speed score: ' + data.ruleGroup.SPEED.score); 
     console.log('done'); 
     res.json({ 'results' : data.ruleGroup.SPEED.score }); 
    }); 

}); 

回答

0

我可能是错的,但不应该删除return声明吗?如果psi返回一个承诺,并且您返回psi我相信.then()语句应添加在app.get函数之后,因为它返回了那里,但不能访问res。那么,试试简单地删除return

+0

是的,我最终删除它,现在结果显示。但是,我想我需要将这个请求作为Ajax请求。那么,在处理数据并返回派生结果之后,我是否可以将它返回? –

+0

我相信你的'res.json'解决方案应该可行,不是吗?如果它不起作用,可能是因为你需要添加一些设置到'app.use'或添加一些标题。尝试记录您尝试发送的响应并检查,以便它们具有正确的格式等。 – flott

相关问题