Javascript 如何使异步API工作?
我目前正在为我的机构开发一个应用程序,遇到了以下问题。 我希望允许用户检查数据库中的某些内容(当前使用firebase)。由于我必须从外部服务器检查某些内容,因此我设置了一个node.js服务器来发送更改通知。我希望将此服务器用作Firebase和应用程序之间的链接,以满足更复杂的要求 对于我的节点服务器和应用程序之间的网关,我使用了express。。。 我设置了基本的东西,但出现了以下问题,我不知道如何解决这个问题 例如,我打开了API以登录到用户帐户,因此我向服务器发送一个带有用户名和身份验证令牌的请求。但现在问题出现了。由于服务器必须从Firebase进行检查,因此我无法对该值执行任何操作,因为我不知道何时获得该值,也不知道如何使用async执行此操作 如果有人知道怎么做,我会很有帮助的。如果上面这个场景是为了混淆一件简单的事情: 当我收到请求(express)时,如何从Firebase发送值。。。当值已经加载时发送一个请求Javascript 如何使异步API工作?,javascript,node.js,express,firebase,firebase-realtime-database,Javascript,Node.js,Express,Firebase,Firebase Realtime Database,我目前正在为我的机构开发一个应用程序,遇到了以下问题。 我希望允许用户检查数据库中的某些内容(当前使用firebase)。由于我必须从外部服务器检查某些内容,因此我设置了一个node.js服务器来发送更改通知。我希望将此服务器用作Firebase和应用程序之间的链接,以满足更复杂的要求 对于我的节点服务器和应用程序之间的网关,我使用了express。。。 我设置了基本的东西,但出现了以下问题,我不知道如何解决这个问题 例如,我打开了API以登录到用户帐户,因此我向服务器发送一个带有用户名和身份验
如有必要,我愿意将数据库更改为MongoDB或其他有帮助的数据库。此类问题的一般解决方案如下:
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
}
});
});
因此,在处理程序内部,您运行一个异步函数,该函数接受回调,并在该回调中创建对原始HTTP请求的响应
makeAsyncCall
可以是对其他服务器的另一个HTTP请求,也可以是数据库查询或其他任何内容。甚至可能是超时:
app.get('/delay', function (req, res) {
setTimeout(function () {
req.send('Done');
});
}, 3000);
在内部回调中,您仍然可以访问定义它们的外部函数的参数,例如
req
和res
对象。您应该从上面的链接中检查答案。基本概念是express服务器等待firebase的响应。当您收到firebase的响应时,express server会将数据发送回客户端。感谢响应已签出链接,我会查看它:)感谢快速响应:)我会检查它现在是否工作感谢:)嘿:)只是想知道返回函数是否有类似的技巧。。。我在一个函数1中复制了与api相同的版本,但在这里我得到了一个未定义的错误。。。