HTML 양식에서 약속 및 비동기/대기 사용
11261 단어 htmlwebdevjavascripttutorial
Promise 객체는 비동기 작업의 최종 완료(또는 실패)와 그 결과 값을 나타냅니다.
Promise 객체는 state와 result라는 두 가지 속성을 지원합니다. Promise 객체가 "보류 중"(작동 중)인 동안 결과는 정의되지 않습니다. Promise 객체가 "이행"되면 결과는 값입니다. Promise 객체가 "거부"되면 결과는 오류 객체입니다.
우리는 ajax에 대한 약속을 많이 사용합니다. 그러나 우리는 그것을 다른 용도로도 사용할 수 있습니다. 그것은 우리의 삶을 더 쉽게 만들 수 있습니다. 그리고 우리는 HTML Form으로 작업하면서 이 기능을 사용할 수 있습니다.
My simple HTML Form
<form hidden action="">
<input type="text" name="name" />
<br />
<input type="text" name="username" />
<br />
<input type="password" name="password" />
<br />
<button type="submit">Submit</button>
<button type="button">Close</button>
</form>
<button id="newUser">New User</button>
JavaScript Setup
const newUserBtn = document.getElementById("newUser");
const formElement = document.querySelector("form");
newUserBtn.addEventListener("click", createUser);
// Async/Await version
const createUser = async () => {
try {
const data = await form.getData();
// Do something with your data
console.log(data);
} catch (error) {
// if user closes the form
console.log("User canceled the operation");
}
};
// Then/Catch version
const createUser = () => {
form
.getData()
.then((data) => {
// Do something with your data
console.log(data);
})
.catch(() => {
// if user closes the form
console.log("User canceled the operation");
});
};
const form = {
open() {
// Open your Form, In my case:
formElement.removeAttribute("hidden");
},
close() {
// Close your Form, In my case:
formElement.setAttribute("hidden", "");
},
getData() {
this.open(); // Opening Form
return new Promise((resolve, reject) => {
const submitHandler = (event) => {
// Prevent Default Reload
event.preventDefault();
// Getting Form input values
const name = formElement["name"].value;
const username = formElement["username"].value;
const password = formElement["password"].value;
// Sending fulfilled data
resolve({ name, username, password });
// Closing the Form
this.close();
};
const closeHandler = () => {
// Rejecting the promise
reject();
// Closing the form
this.close();
};
formElement.addEventListener("submit", submitHandler, { once: true });
formElement.addEventListener("reset", closeHandler, { once: true });
});
}
};
데모(코드펜)
이것은 나의 첫 번째 글입니다. 그러니 실수에 대해 신경쓰지 마세요.
Reference
이 문제에 관하여(HTML 양식에서 약속 및 비동기/대기 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nazmussayad/using-promise-asyncawait-with-html-form-31bh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)