JavaScript를 사용하여 비동기식 처리를 위한 다양한 방법

9322 단어 JavaScripttech
자주 쓰지만 자주 잊어버리기 때문에 필기를 합니다.

병렬 실행


수조의 각 요소를 바탕으로 비동기 처리를 병행할 때 사용Promise.allmap.
index.ts
class ApiClient {
  get(query: string) {
    return new Promise((resolve, _) => setTimeout(
      () => {
        console.log(`run: ${query} query`)
        resolve("ok")
      }
      , Math.random() * 1000)
    )
  }
}

const main = async () => {
  const client = new ApiClient()
  const queries = ['apple', 'banana', 'lemon', 'grape']

  // 並行に非同期処理を実効
  await Promise.all(queries.map(async (query) => client.get(query)))
}

main()
결과는 다음과 같다.출력은 queries에 정의된 수조의 배열 순서와 다를 수 있습니다.
$ ts-node index.ts
run: grape query
run: banana query
run: lemon query
run: apple query

순차적으로 집행하다

for 〜 of를 사용하여 수조의 각 요소를 바탕으로 차례대로 비동기 처리를 실행한다.
index.ts
class ApiClient {
  get(query: string) {
    return new Promise((resolve, _) => setTimeout(
      () => {
        console.log(`run: ${query} query`)
        resolve("ok")
      }
      , Math.random() * 1000)
    )
  }
}

const main = async () => {
  const client = new ApiClient()
  const queries = ['apple', 'banana', 'lemon', 'grape']

  // 直列に非同期処理を実効
  for(const query of queries) {
    await client.get(query)
  }
}

main()
결과는 다음과 같다.출력은 queries에 정의된 수조의 배열 순서와 같다.
$ ts-node index.ts
run: apple query
run: banana query
run: lemon query
run: grape query

좋은 웹페이지 즐겨찾기