이벤트 콜백 내부의 비동기 작업

사용자 7427352

나는 대상 폴더 내에서 파일을 재귀 적으로 찾고 "file", "error", "end"이벤트를 반환하는 findit이라는 모듈을 사용하고 있습니다.

const finder = findit("folder/");
finder.on("file", (file) => {});
finder.on("error", ((error) => {});
finder.on("end", () => {});

파인더가 모든 파일을 찾을 때 종료 이벤트가 호출되지만 파일 이벤트 내에서 비동기 작업을 수행하며 내부에 무언가가있는 경우에만 파일을 분리합니다.

const finder = findit("folder/");
let neededFiles = [];

finder.on("file", (file) => {
  // async operation here to store only the files that i want
  // neededFiles = [...neededFiles, file];
});

finder.on("error", ((error) => {});

finder.on("end", () => {
  console.log(neededFiles); // empty array
});

비동기 작업이 아직 완료되지 않았으므로 neededFile이 비어 있습니다. 내 질문은 : 종료 이벤트에서 비동기 작업을 기다리려면 어떻게해야합니까?

감사.

도마

앱의 스크래치 만 제공 했으므로이를 중심으로 구축하고이를 비동기 부분을 처리하겠다는 약속으로 래핑하는 방법을 보여주었습니다.

function find(folder){
    return new Promise((resolve, reject) => {
        const finder = findit(folder);
        const files = [];

        finder.on("file", (file) => {
            //do stuff like 
            //files.push(valueOrPromise);
            //or
            //files.push( find(anotherPath) );
        });
        finder.on("error", reject);

        finder.on("end", () => {
            //this line finally "returns" the result.
            //to this point you can modify files as you wish
            resolve( Promise.all(files) );

            //hint, if you're working with recursive stuff, you may have nested Arrays, so you should flatten the result
            //resolve( Promise.all(files).then(values => values.reduce((a,b) => a.concat(b), [])) )
        }); 
    })
}

보통 사람들은이 시점에서 묻습니다. 약속이 왜 필요한가요? 비동기 작업의 상태 관리를 구현하기 때문입니다. 그렇다면 왜 직접 구현하고 싶습니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

for 루프 외부의 콜백, 루프 내부의 폐쇄 및``동기 ''이벤트

분류에서Dev

jQuery : ajax 콜백의 바인드 이벤트가 작동하지 않습니다.

분류에서Dev

Nodejs에서 비동기 콜백 이벤트를 쌓는 최적의 방법

분류에서Dev

yeoman generator : 비동기 콜백 내부에서 복사 또는 템플릿이 작동하지 않음

분류에서Dev

WCF 작업 기반 비동기 콜백

분류에서Dev

JQuery 콜백 함수 내의 창 또는 문서 개체에 이벤트 연결이 작동하지 않음

분류에서Dev

React Hooks의 useState 업데이트 프로그램 내부 콜백

분류에서Dev

UI에 콜백을 보내는 새로운 비동기 작업 생성

분류에서Dev

비동기 콜백의 BehaviorSubject가 HTML보기에서 업데이트되지 않음 Ionic

분류에서Dev

이벤트 키를 기반으로 이벤트 콜백의 유형 축소

분류에서Dev

반복자 함수 내에서 완료된 모든 작업의 노드, 비동기 및 콜백

분류에서Dev

.map 비동기 콜백 및 이벤트 루프

분류에서Dev

비동기 콜백으로 이벤트 처리

분류에서Dev

구독의 콜백 기능이 작동하지 않습니다.

분류에서Dev

PowerShell의 비동기 작업에 콜백 함수를 추가하고 반환 데이터를 가져 오는 방법

분류에서Dev

탭의 키업 이벤트 동작

분류에서Dev

탭의 키업 이벤트 동작

분류에서Dev

비동기 콜백의 반환 값 (단위 테스트에서)

분류에서Dev

NodeJS 루프의 비동기 이중 콜백

분류에서Dev

Rails 4. before_validation 콜백 작업시 이상한 동작

분류에서Dev

Fiber의 Meteor Mongo 업데이트 콜백

분류에서Dev

맞춤 이벤트에서 요소 이벤트 리스너 콜백이 작동하지 않음

분류에서Dev

node.js는 콜백 내부에 액세스하기 위해 비동기 작업 외부에 변수를 저장하는 방법은 무엇입니까?

분류에서Dev

내부 콜백이있는 동기 함수 대기

분류에서Dev

진행하기 전에 Javascript 동기 루프 내부의 비동기 콜백이 완료되기를 어떻게 기다릴 수 있습니까?

분류에서Dev

자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

분류에서Dev

작업 콜백 요청이있는 SwiftUI 내부 상태 변경 버튼

분류에서Dev

콜백 기반 및 이벤트 기반 이벤트 처리 시스템의 차이점은 무엇입니까?

분류에서Dev

비동기 작업 메서드 후 콜백 실행

Related 관련 기사

  1. 1

    for 루프 외부의 콜백, 루프 내부의 폐쇄 및``동기 ''이벤트

  2. 2

    jQuery : ajax 콜백의 바인드 이벤트가 작동하지 않습니다.

  3. 3

    Nodejs에서 비동기 콜백 이벤트를 쌓는 최적의 방법

  4. 4

    yeoman generator : 비동기 콜백 내부에서 복사 또는 템플릿이 작동하지 않음

  5. 5

    WCF 작업 기반 비동기 콜백

  6. 6

    JQuery 콜백 함수 내의 창 또는 문서 개체에 이벤트 연결이 작동하지 않음

  7. 7

    React Hooks의 useState 업데이트 프로그램 내부 콜백

  8. 8

    UI에 콜백을 보내는 새로운 비동기 작업 생성

  9. 9

    비동기 콜백의 BehaviorSubject가 HTML보기에서 업데이트되지 않음 Ionic

  10. 10

    이벤트 키를 기반으로 이벤트 콜백의 유형 축소

  11. 11

    반복자 함수 내에서 완료된 모든 작업의 노드, 비동기 및 콜백

  12. 12

    .map 비동기 콜백 및 이벤트 루프

  13. 13

    비동기 콜백으로 이벤트 처리

  14. 14

    구독의 콜백 기능이 작동하지 않습니다.

  15. 15

    PowerShell의 비동기 작업에 콜백 함수를 추가하고 반환 데이터를 가져 오는 방법

  16. 16

    탭의 키업 이벤트 동작

  17. 17

    탭의 키업 이벤트 동작

  18. 18

    비동기 콜백의 반환 값 (단위 테스트에서)

  19. 19

    NodeJS 루프의 비동기 이중 콜백

  20. 20

    Rails 4. before_validation 콜백 작업시 이상한 동작

  21. 21

    Fiber의 Meteor Mongo 업데이트 콜백

  22. 22

    맞춤 이벤트에서 요소 이벤트 리스너 콜백이 작동하지 않음

  23. 23

    node.js는 콜백 내부에 액세스하기 위해 비동기 작업 외부에 변수를 저장하는 방법은 무엇입니까?

  24. 24

    내부 콜백이있는 동기 함수 대기

  25. 25

    진행하기 전에 Javascript 동기 루프 내부의 비동기 콜백이 완료되기를 어떻게 기다릴 수 있습니까?

  26. 26

    자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

  27. 27

    작업 콜백 요청이있는 SwiftUI 내부 상태 변경 버튼

  28. 28

    콜백 기반 및 이벤트 기반 이벤트 처리 시스템의 차이점은 무엇입니까?

  29. 29

    비동기 작업 메서드 후 콜백 실행

뜨겁다태그

보관