JavaScript 비동기 프로그래밍: 비동기 데이터 수집의 특정 방법_javascript 기술
Asyncjs/seriesByHand.js
var fs = require('fs') ;
process.chdir('recipes'); // 작업 디렉토리 변경
var concatenation = '';
fs.readdir('.', function(err, filenames) {
if (err) throw err;
function readFileAt(i) {
var filename = filenames[i];
fs.stat(filename, function(err, stats) {
if (err) throw err;
if (!stats.isFile()) return readFileAt(i 1);
fs.readFile(filename, 'utf8', function(err, text) {
if (err) throw err;
연결 = 텍스트;
if (i 1 === filenames.length ) {
> ' to ' never ' to ' never to ' });
}
readFileAt(0);
});
보시다시피 비동기 버전은 동기 버전보다 코드가 훨씬 많습니다. filter, forEach와 같은 동기식 메서드를 사용하면 코드 줄 수가 절반 정도에 불과하고 훨씬 읽기 쉽습니다. 이러한 멋진 반복자의 비동기 버전이 있다면 얼마나 좋을까요! Async.js를 사용하여 이를 수행하세요!
위의 코드 예에서 저자는 섹션 1.4에서 제가 제공한 조언을 무시했다는 사실을 눈치채셨을 것입니다. 콜백에서 예외를 던지는 것은 특히 프로덕션 환경에서 나쁜 디자인입니다. 그러나 직접적으로 예외를 발생시키는 간단한 예제에서는 문제가 없습니다. 코드에 예상치 못한 오류가 발생하면 throw는 코드를 종료하고 오류 원인을 설명하는 멋진 스택 추적을 제공합니다.
여기서 정말 잘못된 점은 동일한 오류 처리 논리(예: if(err) throw err)가 최대 3번 반복된다는 것입니다! 섹션 4.2.2에서는 Async.js가 이러한 중복을 줄이는 데 어떻게 도움이 되는지 살펴보겠습니다.
Async.js의 기능적 작성 방법
동기 반복자가 사용하는 필터 및 forEach 메서드를 해당 비동기 메서드로 대체하려고 합니다. Async.js는 두 가지 옵션을 제공합니다.
async.filter 및 async.forEach는 주어진 배열을 병렬로 처리합니다.
async.filterSeries 및 async.forEachSeries는 지정된 배열을 순차적으로 처리합니다.이러한 비동기 작업을 병렬로 실행하는 것이 더 빨라야 하는데 왜 순차 접근 방식을 사용합니까? 두 가지 이유가 있습니다.
Node와 다른 애플리케이션 프로세스가 동시에 읽을 수 있는 파일 수에는 상한이 있습니다. 이 상한을 초과하면 운영 체제에서 오류를 보고합니다. 파일을 순차적으로 읽을 수 있다면 이 제한에 대해 걱정할 필요가 없습니다.
이제 먼저 async.forEachSeries를 이해해 보겠습니다. 아래에서는 Async.js의 데이터 수집 방법을 사용하고 동기 버전의 코드 구현을 직접 다시 작성했습니다.
var dirContents = fs.readdirSync('.');
async.filter(dirContents, isFilename, function(filenames) {
async.forEachSeries(filenames, readAndConcat, onComplete);});
function isFilename(filename, callback) {
fs.stat(filename, function(err, stats) {
if (err) throw err;
callback(stats.isFile());
}
function readAndConcat(filename, callback) {
fs.readFile(filename, 'utf8', function(err, fileContents) {
if (err) return callback(err);
연결 = fileContents ;
});
}
function onComplete(err) {
if (err) throw err;
console.log(concatenation);
}
이제 코드는 작업 개요(async.filter 호출 및 async.forEachSeries 호출 형식)와 구현 세부정보(두 개의 반복자 함수 및 완료 콜백 onComplete 형식)의 두 부분으로 아름답게 나뉩니다.
filter 및 forEach는 표준 기능 반복 방법에 해당하는 유일한 Async.js 유틸리티 함수가 아닙니다. Async.js는 다음 메서드도 제공합니다.
reject/rejectSeries,
map/mapSeries, 1:1 변환
reduce/reduceRight, 값의 점진적 변환
탐지/검출; filter
sortBy는 정렬된 복사본을 생성합니다.
some은 적어도 하나의 값이 주어진 기준을 충족하는지 테스트합니다.
every는 모든 값이 주어진 기준을 충족하는지 테스트합니다.
이러한 메서드는 Async.js의 핵심으로, 코드 중복을 최소화하면서 일반적인 반복 작업을 수행할 수 있게 해줍니다. 고급 방법을 계속 탐색하기 전에 이러한 방법에 대한 오류 처리 기술을 살펴보겠습니다.
Async.js 오류 처리 기술
비난하고 싶다면 Node의 fs.exists가 가장 먼저 이런 일을 했다고 비난하세요! 이는 또한 Async.js 데이터 수집 방법(filter/filterSeries, Reject/rejectSeries, detector/DetectSeries, some, all 등)을 사용하는 반복자가 오류를 보고할 수 없음을 의미합니다.
부울이 아닌 모든 Async.js 반복자의 경우 null이 아닌/정의되지 않은 값을 반복자 콜백의 첫 번째 매개변수로 전달하면 오류 값과 함께 완료 콜백이 즉시 호출됩니다. 이것이 readAndConcat이 throw 없이 작동하는 이유입니다.
Asyncjs/forEachSeries.js
function readAndConcat(filename, callback) {
fs .readFile(filename, 'utf8', function(err, fileContents) {
if (err) return callback(err);
concatenation = fileContents;
callback();
} );
}
따라서 callback(err)이 실제로 readAndConcat에서 호출되면 이 오류는 완료 콜백(예: onComplete)으로 전달됩니다. Async.js는 첫 번째 오류로 인해 호출되었는지 또는 모든 작업이 성공적으로 완료되었는지 여부에 관계없이 onComplete가 한 번만 호출되도록 하는 역할만 담당합니다.
Asyncjs/forEachSeries.js
function onComplete(err) {
if (err ) throw err;
console.log(concatenation);
}
노드의 오류 처리 규칙은 Async.js 데이터 수집 방법에는 적합하지 않지만 Async에는 적합할 수 있습니다. js의 다른 모든 메소드와 마찬가지로 이러한 규칙을 준수하면 오류가 각 작업에서 완료 콜백으로 깔끔하게 흐를 수 있습니다. 다음 섹션에서 이에 대한 더 많은 예를 살펴보겠습니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











DDREASE는 하드 드라이브, SSD, RAM 디스크, CD, DVD 및 USB 저장 장치와 같은 파일 또는 블록 장치에서 데이터를 복구하기 위한 도구입니다. 한 블록 장치에서 다른 블록 장치로 데이터를 복사하여 손상된 데이터 블록은 남겨두고 양호한 데이터 블록만 이동합니다. ddreasue는 복구 작업 중에 간섭이 필요하지 않으므로 완전히 자동화된 강력한 복구 도구입니다. 게다가 ddasue 맵 파일 덕분에 언제든지 중지하고 다시 시작할 수 있습니다. DDREASE의 다른 주요 기능은 다음과 같습니다. 복구된 데이터를 덮어쓰지 않지만 반복 복구 시 공백을 채웁니다. 그러나 도구에 명시적으로 지시된 경우에는 잘릴 수 있습니다. 여러 파일이나 블록의 데이터를 단일 파일로 복구

0. 이 글은 어떤 내용을 담고 있나요? 우리는 다재다능하고 빠른 최첨단 생성 단안 깊이 추정 모델인 DepthFM을 제안합니다. DepthFM은 전통적인 깊이 추정 작업 외에도 깊이 인페인팅과 같은 다운스트림 작업에서 최첨단 기능을 보여줍니다. DepthFM은 효율적이며 몇 가지 추론 단계 내에서 깊이 맵을 합성할 수 있습니다. 이 작품을 함께 읽어보아요~ 1. 논문 정보 제목: DepthFM: FastMoncularDepthEstimationwithFlowMatching 저자: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Excel에서 여러 기준으로 필터링을 사용하는 방법을 알아야 하는 경우 다음 자습서에서는 데이터를 효과적으로 필터링하고 정렬할 수 있는 단계를 안내합니다. Excel의 필터링 기능은 매우 강력하며 많은 양의 데이터에서 필요한 정보를 추출하는 데 도움이 될 수 있습니다. 이 기능을 사용하면 설정한 조건에 따라 데이터를 필터링하고 조건에 맞는 부분만 표시하여 데이터 관리를 더욱 효율적으로 할 수 있습니다. 필터 기능을 사용하면 대상 데이터를 빠르게 찾을 수 있어 데이터 검색 및 정리에 드는 시간을 절약할 수 있습니다. 이 기능은 단순한 데이터 목록에만 적용할 수 있는 것이 아니라, 여러 조건에 따라 필터링하여 필요한 정보를 보다 정확하게 찾을 수 있도록 도와줍니다. 전반적으로 Excel의 필터링 기능은 매우 실용적입니다.

Google이 추진하는 JAX의 성능은 최근 벤치마크 테스트에서 Pytorch와 TensorFlow를 능가하여 7개 지표에서 1위를 차지했습니다. 그리고 JAX 성능이 가장 좋은 TPU에서는 테스트가 이루어지지 않았습니다. 개발자들 사이에서는 여전히 Tensorflow보다 Pytorch가 더 인기가 있습니다. 그러나 앞으로는 더 큰 모델이 JAX 플랫폼을 기반으로 훈련되고 실행될 것입니다. 모델 최근 Keras 팀은 기본 PyTorch 구현을 사용하여 세 가지 백엔드(TensorFlow, JAX, PyTorch)와 TensorFlow를 사용하는 Keras2를 벤치마킹했습니다. 첫째, 그들은 주류 세트를 선택합니다.

지연이 발생하고 iPhone의 모바일 데이터 연결 속도가 느립니까? 일반적으로 휴대폰의 셀룰러 인터넷 강도는 지역, 셀룰러 네트워크 유형, 로밍 유형 등과 같은 여러 요소에 따라 달라집니다. 더 빠르고 안정적인 셀룰러 인터넷 연결을 얻기 위해 할 수 있는 일이 몇 가지 있습니다. 수정 1 – iPhone 강제 다시 시작 때로는 장치를 강제로 다시 시작하면 셀룰러 연결을 포함한 많은 항목이 재설정됩니다. 1단계 – 볼륨 높이기 키를 한 번 눌렀다가 놓습니다. 그런 다음 볼륨 작게 키를 눌렀다가 다시 놓습니다. 2단계 - 프로세스의 다음 부분은 오른쪽에 있는 버튼을 누르는 것입니다. iPhone이 다시 시작되도록 하세요. 셀룰러 데이터를 활성화하고 네트워크 속도를 확인하세요. 다시 확인하세요 수정 2 – 데이터 모드 변경 5G는 더 나은 네트워크 속도를 제공하지만 신호가 약할 때 더 잘 작동합니다

세상은 미친 듯이 큰 모델을 만들고 있습니다. 인터넷의 데이터만으로는 충분하지 않습니다. 훈련 모델은 '헝거게임'처럼 생겼고, 전 세계 AI 연구자들은 이러한 데이터를 탐식하는 사람들에게 어떻게 먹이를 줄지 고민하고 있습니다. 이 문제는 다중 모드 작업에서 특히 두드러집니다. 아무것도 할 수 없던 시기에, 중국 인민대학교 학과의 스타트업 팀은 자체 새로운 모델을 사용하여 중국 최초로 '모델 생성 데이터 피드 자체'를 현실화했습니다. 또한 이해 측면과 생성 측면의 두 가지 접근 방식으로 양측 모두 고품질의 다중 모드 새로운 데이터를 생성하고 모델 자체에 데이터 피드백을 제공할 수 있습니다. 모델이란 무엇입니까? Awaker 1.0은 중관촌 포럼에 최근 등장한 대형 멀티모달 모델입니다. 팀은 누구입니까? 소폰 엔진. 런민대학교 힐하우스 인공지능대학원 박사과정 학생인 Gao Yizhao가 설립했습니다.

이번 주, 오픈AI(OpenAI), 마이크로소프트(Microsoft), 베조스(Bezos), 엔비디아(Nvidia)가 투자한 로봇 회사인 FigureAI는 약 7억 달러의 자금 조달을 받았으며 내년 내에 독립적으로 걸을 수 있는 휴머노이드 로봇을 개발할 계획이라고 발표했습니다. 그리고 Tesla의 Optimus Prime은 계속해서 좋은 소식을 받았습니다. 올해가 휴머노이드 로봇이 폭발하는 해가 될 것이라는 데는 누구도 의심하지 않는다. 캐나다에 본사를 둔 로봇 회사인 SanctuaryAI는 최근 새로운 휴머노이드 로봇인 Phoenix를 출시했습니다. 관계자들은 이 로봇이 인간과 같은 속도로 자율적으로 많은 작업을 완료할 수 있다고 주장한다. 인간의 속도로 자동으로 작업을 완료할 수 있는 세계 최초의 로봇인 Pheonix는 각 물체를 부드럽게 잡고 움직이며 우아하게 왼쪽과 오른쪽에 배치할 수 있습니다. 자동으로 물체를 식별할 수 있습니다.

테슬라의 로봇 옵티머스(Optimus)의 최신 영상이 공개됐는데, 이미 공장에서 작동이 가능한 상태다. 정상 속도에서는 배터리(테슬라의 4680 배터리)를 다음과 같이 분류합니다. 공식은 또한 20배 속도로 보이는 모습을 공개했습니다. 작은 "워크스테이션"에서 따고 따고 따고 : 이번에 출시됩니다. 영상에는 옵티머스가 공장에서 이 작업을 전 과정에 걸쳐 사람의 개입 없이 완전히 자율적으로 완료하는 모습이 담겨 있습니다. 그리고 Optimus의 관점에서 보면 자동 오류 수정에 중점을 두고 구부러진 배터리를 집어 넣을 수도 있습니다. NVIDIA 과학자 Jim Fan은 Optimus의 손에 대해 높은 평가를 했습니다. Optimus의 손은 세계의 다섯 손가락 로봇 중 하나입니다. 가장 능숙합니다. 손은 촉각적일 뿐만 아니라
