>  Q&A  >  본문

비동기 함수에서 Promise를 반복적으로 실행하는 방법은 무엇입니까?

<p>Promise와 async Wait를 배우고 있습니다. 여기서 addPost 함수를 호출하고 개체를 두 번 푸시한 다음 개체 배열을 반복하여 결과를 확인하고 싶지만 이 코드에서는 결과가 다음과 같습니다. 예상되는. 여기서 코드가 showDetails() 함수에 대해 실행되면 4개의 객체가 있어야 하는데 3개의 객체만 표시됩니다. 여기서 누락된 것은 무엇입니까? </p> <p><br /></p> <pre class="brush:js;toolbar:false;">const post = [{ title: '포스트 1' }, { title: '포스트 2' }]; 변수 개수 = 3; const diffFunction = 비동기 () => const addPost = new Promise((해결, 거부) => { setTimeout(() => { post.push({ title: `게시물 ${count}` }); 카운트++; 해결(개수); }, 1000) }) const deletePost = new Promise((res, rej) => { setTimeout(() => { const deltedPost = post.pop(); res(deltedPost); }, 2000) }) const showDetails = () => post.forEach(요소 => { console.log(요소.제목); }); } addPost를 기다립니다. addPost를 기다립니다. 쇼세부사항(); } diffFunction();</pre> <p><br /></p>
P粉356128676P粉356128676449일 전422

모든 응답(2)나는 대답할 것이다

  • P粉633075725

    P粉6330757252023-08-19 13:31:19

    여기서 addPost는 약속 기능이 아닙니다. 그렇기 때문에 "await addPost"라고 쓰면 addPost 변수가 다시 초기화되는 것처럼 보입니다. 이것이 작동하려면 Promise 함수를 호출해야 합니다. 이렇게 하면 호출한 후에 약속된 작업을 수행하게 됩니다.

    다음은 수정된 코드입니다

    으아악

    이것이 확실하다면 알려주세요.

    감사합니다

    회신하다
    0
  • P粉770375450

    P粉7703754502023-08-19 13:07:09

    new Promise()创建一个promise时,它会立即开始运行。你可以通过在控制台中运行类似于new Promise(() => { console.log("hello") }) 코드를 사용하여 이를 테스트하면 즉시 로그가 표시됩니다.

    새 Promise를 반환하는 함수를 정의하여 원하는 동작을 달성할 수 있습니다. 이렇게 하면 Promise는 함수가 호출될 때만 실행되며 각 함수 호출은 다른 Promise를 반환합니다.

    으아악

    회신하다
    0
  • 취소회신하다