我是js的新手。在我的项目中,我使用的是mysql和node js。 在控制器的某个地方我需要从不同的模型中获取一些数据。在php中它看起来像
function some() {
$user = $user->getOne($id);
$photos = $photos->getOne($user->id);
$posts = $post($user->id, $photo->uid)
}
我在一个范围内拥有所有这些变量 在节点js中,模型的结果是异步的,所以它看起来像嵌套回调。 简短的例子
UserModel.findbyid(result.user_id, function (err, user_data) {
PhotoModel.GetVoteCount(user_data.id, result.id, function (res_count) {
PhotoModel.getWinners(function (err, winners_ar) {
PhotoModel.getweekusers(1, function (result_week) {
response.render('one.twig', {
view_user: request.user,
image: result,
p_user: user_data,
count: res_count,
winners: winners_ar,
week_users: result_week['photos']
});
});
})
});
});
答案 0 :(得分:0)
您可以查看async module
这简化了你所说的" callback hell"通过一些有助于在异步代码中创建流的函数。
特别针对您的情况 - async.waterfall将起作用
答案 1 :(得分:0)
您有两种选择:
答案 2 :(得分:0)
使用promises或帮助您使用promises的库。