【发布时间】:2019-09-30 19:32:56
【问题描述】:
假设有一个 HTTP GET 回调定义为:
router.get('/latestpost', function(req, res, next) {
var data = new FbData();
get_latest_post (data);
get_post_image (data);
res.json(data);
};
两个get_ 函数都使用fb package 生成HTTP 请求并在完成时执行回调。如何修改上述 GET 回调以等待 Facebook 的响应,然后才向客户端发送响应?
当时我通过连续执行get_ 函数并将res(响应)参数传递给它们来解决问题,最后一个函数发送响应:
router.get('/latestpost', function(req, res, next) {
var data = new FbData();
get_latest_post (res, data);
};
function get_latest_post (res, data) {
FB.api(_url, function (res_fb) {
if(!res_fb || res_fb.error) {
console.log(!res_fb ? 'error occurred' : res_fb.error);
return;
}
// Do stuff with data
get_post_image (res, data);
});
}
function get_post_image (res, data) {
FB.api(_url, function (res_fb) {
if(!res_fb || res_fb.error) {
console.log(!res_fb ? 'error occurred' : res_fb.error);
return;
}
// Do stuff with data
/* At the end send the post data to the client */
res.json(data);
});
}
我找到了a similar question,但我正在考虑它,因为我找不到将解决方案应用于我的问题的正确方法。我曾尝试使用in this manual 描述的模式,但我无法使用 Promise 或 async/await 来执行它。有人可以指出我正确的方向吗?
【问题讨论】:
标签: javascript node.js express promise async-await