如何使Async API工作?

我目前正在为我的机构开发一个应用程序,并遇到以下问题。 我想允许用户检查数据库中的一些东西(目前使用的是Firebase)。 由于我必须从外部服务器检查一些内容,因此我设置了一个node.js服务器来发送更改通知。我想将此服务器用作Firebase与应用程序之间的链接,以满足更复杂的要求。

对于我的节点服务器和应用程序之间的门,我用快递…我设置了基本的东西,但以下问题发生,我不知道如何解决这个问题…

例如,我有APIlogin到用户帐户,所以我发送我的服务器与用户名和身份validation令牌的请求。 但是现在问题发生了。 由于服务器必须从Firebase检查它,我不能做任何事情的价值,因为我不知道什么时候得到它,也不知道如何做到这一点与asynchronous。

如果有人知道如何做到这一点,那真的会有帮助。 如果这个上面的情况是在这里混淆一​​个简单的事情:

我怎样才能当我得到一个请求(快递),从Firebase发送一个值…只要发送一个请求时,值已经加载?

如果需要的话,我愿意更改数据库,例如MongoDB或者其他有用的东西。

像这样的问题的一般解决scheme是这样的:

app.post('/login', function (req, res) { makeAsyncCall('some arguments...', function (err, data) { if (err) { // you have error, send an appropriate error // to the client with `res.send` } else { // you have `data`, check it and use `res.send` // to send response to the client } }); }); 

因此,在你的处理程序中,你运行一个asynchronous函数,并且在callback函数中创build一个对原始HTTP请求的响应。

makeAsyncCall可以是对其他服务器或数据库查询或其他任何内容的另一个HTTP请求。 甚至可能是暂停:

 app.get('/delay', function (req, res) { setTimeout(function () { req.send('Done'); }); }, 3000); 

在内部callback中,您仍然可以访问定义它们的外部函数的参数 – 特别是reqres对象。