gpt4 book ai didi

javascript - 如何同时使用 Node js 中三个不同 API 调用的响应

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:53 24 4
gpt4 key购买 nike

我正在尝试使用 NodeJS 创建一个 Web 应用程序,但由于 NodeJS 的异步特性而陷入困境。

我有三个不同的环境,根据 html 表单的用户输入,我应该检查所选环境中是否存在用户。

html 将有 3 个复选框,用户可以选择任意数量的环境。

if(Dev_Environmnet){
getUserDatafromEnvironment(user,environment, function(callback1)){
if(callback1.error){
// User Does Not Exist Or credentials are wrong
}
else{
//get User API
}

});
}
if(PVS_Environmnet){
getUserDatafromEnvironment(user,environment, function(callback1)){
if(callback1.error){
// User Does Not Exist Or credentials are wrong
}
else{
//get User API
}

});
}
if(Prod_Environmnet){
getUserDatafromEnvironment(user,environment, function(callback1)){
if(callback1.error){
// User Does Not Exist Or credentials are wrong
}
else{
//get User API
}

});
}

完成后,我需要回调的结果将其打印到另一个 HTML 页面。这就是我需要在下一页上显示的内容

DEV - API key gdeuysgdsgddiudgqwywdgAguiegdhsiw
pVS - user does not exist or credentials are wrong
Prod - APYI Key ugehdfiyugfugew%$%$udisfiuhygyig

我无法一次获得所有这些值。有人可以帮助我吗?

最佳答案

首先,您可以包装 getUserDatafromEnvironment 以便它返回 Promise :

function getUserDatafromEnvironmentP(flag, user, environment) {
if (!flag) return Promise.resolve(undefined); // method not selected

return new Promise(function(resolve) {
getUserDatafromEnvironment(user, environment, function(callback) {
resolve(!callback.error);
})
});
}

然后您可以调用三个方法并将它们传递给 Promise.all()它将等到所有三个都完成并告诉您结果:

let p1 = getUserDatafromEnvironmentP(Dev_Environmnet, user, environmnet);
let p2 = getUserDatafromEnvironmentP(PVS_Environmnet, user, environmnet);
let p3 = getUserDatafromEnvironmentP(Prod_Environmnet, user, environmnet);

let result = Promise.all([p1, p2, p3]).then(
function(results) {
// results[0 .. 2] will contain the three results
// undefined for "not used", false for "failed", true for "ok"
.. continue with processing here
})
);

// you can't do anything useful here because the above code is async

注意:通常我会皱起眉头使用 resolve 来指示失败,但在这种情况下,它似乎是合适的,因为随后使用了 Promise.all()

关于javascript - 如何同时使用 Node js 中三个不同 API 调用的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48736942/

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