> 데이터 베이스 > MySQL 튜토리얼 > Async/Await가 Node.js MySQL 쿼리 결과를 어떻게 동기화할 수 있나요?

Async/Await가 Node.js MySQL 쿼리 결과를 어떻게 동기화할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-29 05:58:13
원래의
228명이 탐색했습니다.

How Can Async/Await Synchronize Node.js MySQL Query Results?

Node.js 결과를 MySQL용 Async/Await와 동기화

Node.js에서는 특히 다음과 같은 경우 비동기 작업을 처리하는 것이 어려울 수 있습니다. 계속하기 전에 결과를 동기화해야 합니다. async/await 키워드를 사용하는 것이 이를 달성하는 편리한 접근 방식입니다.

제공된 코드 조각에서는 4개의 개별 쿼리에서 결과를 검색하여 연결된 문자열에 추가하는 것을 목표로 합니다. 그러나 기존 콜백 기반 접근 방식은 쿼리 아래 코드가 먼저 실행되므로 변수가 공백으로 남아 있기 때문에 문제가 됩니다.

이 문제를 극복하기 위해 Node.js 버전 8에서는 기본 util.promisify() 함수를 도입합니다. . 이 함수를 사용하면 콜백 기반 함수를 약속 기반 함수로 변환할 수 있습니다. util.promisify() 및 노드 mysql 모듈을 활용하면 다음 코드를 작성할 수 있습니다.

// Import required modules
const mysql = require('mysql');
const util = require('util');

// Create a MySQL connection
const conn = mysql.createConnection({/* connection parameters */});

// Promisify the query method using util.promisify().
// Remember to use .bind() to maintain the correct this context.
const query = util.promisify(conn.query).bind(conn);

// Execute queries concurrently using async/await
const main = async () => {
  try {
    const rows1 = await query(/* query string */);
    const rows2 = await query(/* query string */);
    const rows3 = await query(/* query string */);
    const rows4 = await query(/* query string */);

    // Append the results to a single string
    let appendedText = `${rows1} ${rows2} ${rows3} ${rows4}`;

    // Use the appendedText as needed
  } catch (err) {
    // Handle errors
  } finally {
    // Close the connection
    conn.end();
  }
};

// Start the process
main();
로그인 후 복사

이 코드는 쿼리를 동시에 실행하고 계속하기 전에 결과가 제공될 때까지 기다립니다. 각 쿼리의 행은 추가 처리에 사용할 수 있는 추가 텍스트 문자열에 추가됩니다.

위 내용은 Async/Await가 Node.js MySQL 쿼리 결과를 어떻게 동기화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿