gpt4 book ai didi

node.js - nodejs-在函数内执行多个异步调用的最佳方法?

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:21 26 4
gpt4 key购买 nike

我正在使用 Express JS (Express 4) 框架创建一个 API。我对 NodeJS 还很陌生,所以我想知道在同一函数内执行多个异步调用的最佳方法。

对于此示例,我的登录 Controller 中有一个名为 Login 的函数。在这个函数中,假设我需要进行相当多的异步调用来验证用户身份、保存登录信息和类似的功能。

但是对于某些异步调用,要处理的数据应该从之前的异步调用中获取(它们是依赖函数),而有些函数则不然。

现在,我就是这样打电话的。

exports.login = function (req, res) {

var user = {
email: 'fakeemail@id.com',
password: 'password'
};
//Async call 1
Login.authUser(user, function (err1, rows1) {
var user_id = rows1[0].id;

//Async call 2 (depends on async call 1 for user_id)
Login.fetchUserDetails(user_id, function (err2, rows2) {

//Async call 3
Login.updateLoginInfo(param3, function (err3, rows3) {

//Some functionality occurs here then async call 4 happens

//Async call 4
Login.someOtherFunctionality(param4, function (err4, rows4) {
//return response to user
res.json({
success: true
});
});

});
});

});
};

现在所有这些异步调用都是嵌套的。还有其他方法可以做到这一点吗?

P.S: 我没有在这个例子中添加错误处理

最佳答案

您可以使用promise以及。它会让你的语法更漂亮。你的代码看起来像

Login.authUser(user).
then(fetchUser).
then(updateLoginInfo).
then(someOtherFunctionality).
catch(function(error){
//log your error or whatever
});

关于node.js - nodejs-在函数内执行多个异步调用的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com