현재 또는 미래에 사용할 수 있거나 전혀 사용할 수 없는 값을 나타냅니다.
약속 수명 주기:
보류 중: 기능이 작동하기 시작합니다.
Fulfilled: 작업이 성공적으로 완료되었으며 결과 값이 있습니다.
거부됨: 작업이 실패했으며 오류 개체가 있습니다.
약속 구문:
Promise는 두 개의 인수(Resolve 및 Reject)가 있는 함수를 사용하는 새로운 Promise 생성자를 사용하여 생성됩니다.
코드 조각에는 새 Promise(비동기 작업을 처리하는 메서드가 있는 Promise 객체)를 반환하는 getUser라는 함수가 있습니다.
Promise 생성자 내부에는 데이터베이스에서 데이터를 가져오는 것과 같은 비동기 작업을 시뮬레이션하는 setTimeout 함수가 있습니다. Promise에는 두 가지 주요 메소드가 전달됩니다:
resolve: 작업이 성공하면 호출됩니다. 이 경우 id === 1이면 모의 사용자 객체 { id: 1, name: "Diana", email: "Diana@test.com" }를 반환합니다.
reject: 작업이 실패할 때 호출됩니다. ID가 1이 아닌 경우 "사용자를 찾을 수 없습니다..."라는 오류 메시지와 함께 Promise가 거부됩니다.
해결 및 거부 함수는 약속의 맥락에서 반환 문처럼 작동하여 호출자가 작업의 성공 또는 실패를 처리할 수 있도록 합니다.
Promise를 연결하여 일련의 비동기 작업을 순차적으로 수행할 수 있습니다.
이 예에서는 데이터 가져오기를 단계별로 시뮬레이션하기 위해 여러 Promise를 연결합니다.
먼저 getUser(1)를 호출하여 사용자 데이터를 가져옵니다. 성공하면 다음 단계로 넘어갑니다.
둘째, getOrders(user.id)를 호출하여 user.id를 사용하여 해당 사용자의 주문을 받습니다.
-셋째, 목록에서 두 번째 주문(orders[1])을 선택하고 getOrderDetails(orders[1])를 사용하여 해당 세부정보를 가져옵니다.
언제든지 문제가 발생하면(예: 사용자를 찾을 수 없거나 주문이 누락된 경우) 해당 오류는 .catch() 블록에 포착되어 표시됩니다.
결과:
이 접근 방식을 사용하면 지저분한 코드 대신 깔끔하고 단계별로 비동기 작업을 더 쉽게 수행할 수 있습니다.
Promise.all(): 여러 Promise를 병렬로 실행하고 모두 해결될 때까지 기다립니다.
Promise.all([promise1, promise2]) .then((results) => { console.log(results); // Array of all fulfilled values });
예:
(콜백에 대한 이 접근 방식을 읽고 비교하는 것이 좋습니다)
위 내용은 자바스크립트의 약속의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!