Node.js는 Chrome V8 엔진을 기반으로 구축된 JavaScript 실행 환경이며 이벤트 중심의 비차단 I/O 모델을 기반으로 하므로 대규모 데이터 수집 및 높은 동시 요청을 처리할 때 우수한 성능을 발휘합니다. 그러나 어떤 경우에는 동기식 요청을 해야 합니다. 다음 요청을 하기 전에 이전 요청이 완료될 때까지 기다려야 하기 때문에 동기식 요청을 하려면 몇 가지 특별한 기술이 필요합니다.
Node.js에서 동기식 요청을 수행하는 방법에는 콜백 사용, Promise 사용, async/await 사용 등이 있습니다. 여기에서는 이러한 방법의 사용을 소개합니다.
Node.js에서 가장 초기의 비동기 처리 방법은 콜백 함수입니다. 콜백 함수에서 후속 작업을 수행하거나 콜백 함수를 다른 함수에 값으로 전달할 수 있습니다. 콜백 함수는 함수 내에서 다른 함수를 호출할 수 있는 JavaScript 함수입니다.
동기 요청 시 콜백 기능을 사용하여 다른 작업을 수행하기 전에 요청이 완료되었는지 확인할 수 있습니다. 예:
const request = require('request'); request('https://jsonplaceholder.typicode.com/todos/1', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 输出请求得到的结果 } })
위의 예에서는 요청 모듈을 사용하여 요청을 하고 결과를 콘솔에 출력했습니다. 콜백 함수는 비동기적으로 처리되므로 콜백 함수에서 후속 작업을 수행해야 합니다. 이렇게 하면 요청이 완료된 후 다른 작업을 수행할 수 있습니다.
Promise는 더욱 발전된 비동기 처리 방식으로, 더욱 유연하고 읽기 쉬운 코드를 제공합니다. Promise는 비동기 작업의 최종 완료 또는 실패를 나타내며 값을 반환합니다. 비동기 코드의 복잡성을 단순화하고 연쇄 호출을 지원합니다.
Promise를 사용하여 동기 요청을 할 때 request-promise 모듈을 사용할 수 있습니다. 이 모듈은 요청 모듈의 Promise 버전으로, 요청 요청을 Promise 객체로 쉽게 변환하여 동기 요청을 구현할 수 있습니다. 예:
const rp = require('request-promise'); rp('https://jsonplaceholder.typicode.com/todos/1') .then(function (response) { console.log(response); }) .catch(function (err) { console.log(err); });
위의 예에서는 request-promise 모듈을 사용하여 요청을 하고 Promise 개체를 사용하여 요청 결과를 처리했습니다. 이렇게 하면 요청이 완료된 후 다른 작업을 수행할 수 있습니다.
async/await는 ES2017의 최신 비동기 처리 방법입니다. 비동기 코드를 보다 동기적인 방식으로 작성하여 비동기 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만듭니다.
async/await를 사용하여 동기 요청을 하는 경우 요청-약속 모듈을 사용해야 합니다. 예:
const rp = require('request-promise'); async function getData() { const result = await rp('https://jsonplaceholder.typicode.com/todos/1'); console.log(result); } getData().catch((err) => { console.error(err); });
위의 예에서는 async/await를 사용하여 요청-약속 모듈을 캡슐화했습니다. async 키워드를 사용하면 getData() 함수를 비동기 함수로 바꿀 수 있으며, 그런 다음 함수 내에서 다른 작업을 수행하기 전에 요청이 완료될 때까지 기다리기 위해 wait 키워드를 사용합니다.
요약
Node.js는 고성능 서버측 언어로서 비동기 처리 기능을 최대한 활용했습니다. 그러나 어떤 경우에는 동기 요청이 필요합니다. 이 경우 콜백, Promise 및 async/await를 사용하여 동기 요청을 할 수 있습니다. 실제 개발에서는 실제 상황에 따라 가장 적절한 방법을 선택할 수 있습니다.
위 내용은 nodejs 동기 요청의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!