Object
유형의 Promise 객체입니다. <코드>번호</code>가 아닙니다. 그렇다면 "그 값은 promiseA에 1을 더한 결과가 될 것입니다"라는 말은 무엇을 의미할까요? </p>
<p><code>promiseB.value</code>처럼 액세스해야 하나요? 성공 콜백은 어떻게 약속을 반환하고 "결과 + 1"을 반환할 수 있나요? 나는 뭔가를 놓치고 있습니다. </p>P粉6161110382023-08-22 12:43:32
프라미스가 해결/거부되면 성공/오류 핸들러를 호출합니다.
으아아아then
메소드는 또한 promiseA의 성공/오류 핸들러의 반환 값에 따라 해결/거부될 promiseB를 반환합니다.
promiseA의 성공/오류 핸들러는 promiseB의 결과에 영향을 미치는 세 가지 가능한 값을 반환할 수 있습니다.
이러한 이해를 통해 다음을 이해할 수 있습니다.
으아아아그런 다음 호출은 즉시 promiseB를 반환합니다.
promiseA가 해결되면 결과가 promiseA의 성공 핸들러에 전달됩니다.
반환 값은 promiseA의 결과 + 1이고 성공 핸들러는 값(위의 옵션 2)을 반환하므로 promiseB는 즉시 해결되고 promiseB의 성공 핸들러는 promiseA의 결과 + 1이 전달됩니다.
P粉1551282112023-08-22 00:10:42
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()
다른 비동기 함수 내에서만 사용할 수 있습니다. 기본적으로 상위 비동기 컨텍스트에서는 하위 비동기 컨텍스트에서 생성된 값에 직접 액세스할 수 있습니다.