약속의 가치를 어떻게 얻을 수 있나요?
P粉116631591
2023-08-21 13:47:33
<p><code>$q</code>의 예에 대한 Angular 문서를 보고 있었지만 일반적으로 Promise에 대해서는 이것이 효과가 있을 것이라고 생각했습니다. 아래 예는 설명을 포함하여 해당 문서에서 직접 복사한 것입니다. </p>
<pre class="brush:php;toolbar:false;">promiseB = promiseA.then(function(result) {
결과 + 1을 반환합니다.
});
// promiseA가 해결되면 promiseB가 즉시 해결되고 해당 값은 promiseA에 1</pre>을 더한 결과가 됩니다.
<p>이게 어떻게 작동하는지 잘 모르겠습니다. 첫 번째 <code>.then()</code>의 결과에 대해 <code>.then()</code>을 호출하여 이를 함께 연결할 수 있다면 그렇게 할 수 있다는 것을 압니다. ;code>promiseB는 Object
유형의 Promise 객체입니다. <코드>번호</code>가 아닙니다. 그렇다면 "그 값은 promiseA에 1을 더한 결과가 될 것입니다"라는 말은 무엇을 의미할까요? </p>
<p><code>promiseB.value</code>처럼 액세스해야 하나요? 성공 콜백은 어떻게 약속을 반환하고 "결과 + 1"을 반환할 수 있나요? 나는 뭔가를 놓치고 있습니다. </p>
프라미스가 해결/거부되면 성공/오류 핸들러를 호출합니다.
으아아아then
메소드는 또한 promiseA의 성공/오류 핸들러의 반환 값에 따라 해결/거부될 promiseB를 반환합니다.promiseA의 성공/오류 핸들러는 promiseB의 결과에 영향을 미치는 세 가지 가능한 값을 반환할 수 있습니다.
이러한 이해를 통해 다음을 이해할 수 있습니다.
으아아아그런 다음 호출은 즉시 promiseB를 반환합니다.
promiseA가 해결되면 결과가 promiseA의 성공 핸들러에 전달됩니다.
반환 값은 promiseA의 결과 + 1이고 성공 핸들러는 값(위의 옵션 2)을 반환하므로 promiseB는 즉시 해결되고 promiseB의 성공 핸들러는 promiseA의 결과 + 1이 전달됩니다.
promiseA
的then
函数返回一个新的promise(promiseB
),在promiseA
解决后立即解决,其值是在promiseA
의 성공 함수에서 반환된 값입니다.이 경우에는
promiseA
解决为一个值-result
,然后立即使用result + 1
的值解决promiseB
.같은 방식으로
으아아아promiseB
的值与访问promiseA
의 결과에 액세스합니다.ECMAScript 2016(ES7, 2016)부터
으아아아async
/await
는 JavaScript의 표준이 되어 위 접근 방식에 대한 대체 구문을 허용합니다. 이제 다음과 같이 쓸 수 있습니다:이제
await
를 사용하여 promiseA의 결과를 풀고 직접 사용할 수 있으므로 promiseB가 없습니다.그러나
으아아아await
只能在async
은async
함수 내에서만 사용할 수 있습니다. 따라서 조금 확대하면 위 코드가 함수 내에 포함되어야 합니다.분명히 말하자면, 이 예에서는
doSomething
函数的返回值仍然是一个promise,因为async函数返回的是promise。所以如果你想要访问返回值,你需要使用result = await doSomething()
다른 비동기 함수 내에서만 사용할 수 있습니다. 기본적으로 상위 비동기 컨텍스트에서는 하위 비동기 컨텍스트에서 생성된 값에 직접 액세스할 수 있습니다.