javascript - i have 2 asynchronous function and i want to get the 2 return value of asynchronous function at the same time. what to do?
问题描述
Validation script
asynchronous function
function userNameValidation(input, message) {
const formInput = input.value.trim();
return new Promise((resolve, reject) => {
$.ajax({
type: "POST",
url: "ajax/usernameAvailability.php",
data: {
username: formInput
},
success: (feedback) => {
var convertedFeedback = JSON.parse(feedback);
console.log(convertedFeedback);
if (convertedFeedback.status === "alreadyTaken") {
setErrorFor(input, message);
reject(false);
} else {
setSuccessFor(input);
resolve(true);
}
}
});
});
}
asynchronous function
function emailValidation(input, message) {
const formInput = input.value.trim();
return new Promise((resolve, reject) => {
$.ajax({
type: "POST",
url: "ajax/emailAvailability.php",
data: {
email: formInput
},
success: (feedback) => {
var convertedFeedback = JSON.parse(feedback);
console.log(convertedFeedback);
if (convertedFeedback.status === "alreadyTaken") {
setErrorFor(input, message);
reject(false);
} else {
setSuccessFor(input);
resolve(true);
}
}
});
});
}
register script
if (Empty(username, "Username cannot be blank")) {
unameStatus = false; // if false then no error on username input fields
if (userNameValidation(username, "Username is already taken")) {
unameStatus = false;
registerUser(); // to register user
} else {
unameStatus = true; // if true then have error on username input fields
registerUser();
}
} else {
unameStatus = true;
//registerUser();
}
if (Empty(email, "Email cannot be blank")) {
emailStatus = false; // if false then no error on username input fields
if (emailValidation(email, "email is already taken")) {
emailStatus = false;
registerUser();
to register user
} else {
emailStatus = true; // if true then have error on username input fields
registerUser();
}
} else {
emailStatus = true;
//registerUser();
}
解决方案
用于Promise.all
组合来自不同 API 调用的响应,这样您就可以同时处理响应!
Promise.all([
fetch('apiCall1'),
fetch('apiCall2')
]).then(function (responses) {
// Get a JSON object from each of the responses
return Promise.all(responses.map(function (response) {
return response.json();
}));
}).then(function (data) {
// Log the data to the console
// You would do something with both sets of data here
console.log(data);
}).catch(function (error) {
// if there's an error, log it
console.log(error);
});
推荐阅读
- ios - 如何在没有电话大纲的 .xib 文件中创建新视图?
- python - 关于框架算法/在Python中提取某个感兴趣的对象
- r - 重命名目标而无需重建
- apache - 在子文件夹中重写 Htaccess 中的 Base
- python - 如何在反应 js 应用程序中使用 npm python-shell?
- c++ - GNUMakefile 和 gcc:解决冲突“-std=c++”要求的顺序
- .htaccess - 通过.htaccess 重定向除某些特定流量之外的所有流量..?
- c# - 获取文本文件中第一个字符的计数?
- python - 在 python 中使用 pandas 时如何修复“属性错误”
- javascript - 如何在点击时动态添加到 DOM?