루프 내에서 비동기 함수 완료 후 함수를 호출하는 방법은 무엇입니까?

익명

NodeJS에 forEach 루프가 있으며 일련의 키를 반복하며 값은 Redis에서 비동기 적으로 검색됩니다. 루프 및 검색이 완료되면 해당 데이터 세트를 응답으로 반환하고 싶습니다.

현재 내 문제는 데이터 검색이 비동기 적이며 응답이 전송 될 때 배열이 채워지지 않기 때문입니다.

forEach 루프에서 프라 미스 또는 콜백을 사용하여 응답이 데이터와 함께 전송되도록하려면 어떻게해야합니까?

exports.awesomeThings = function(req, res) {
    var things = [];
    client.lrange("awesomeThings", 0, -1, function(err, awesomeThings) {
        awesomeThings.forEach(function(awesomeThing) {
            client.hgetall("awesomething:"+awesomeThing, function(err, thing) {
                things.push(thing);
            })
        })
        console.log(things);
        return res.send(JSON.stringify(things));
    })
벤자민 그륀 바움

여기에서 Bluebird promise를 사용 합니다. 코드의 의도가 얼마나 분명하고 중첩이 없는지 주목하십시오.

첫째,하자 promisify hgetall 호출 및 클라이언트 -

var client = Promise.promisifyAll(client);

이제 .then노드 콜백 및 .NET Framework를 사용한 집계 대신 promise를 사용 하여 코드를 작성해 보겠습니다 .map. .then비동기 작업이 완료되었음을 알리는 것은 무엇입니까? .map사물의 배열을 가져와 hgetall 호출처럼 모두 비동기 작업에 매핑합니다.

Bluebird가 Async약속 된 메서드에 접미사 (기본적으로)를 추가하는 방법에 유의하십시오 .

exports.awesomeThings = function(req, res) {
    // make initial request, map the array - each element to a result
    return client.lrangeAsync("awesomeThings", 0, -1).map(function(awesomeThing) {
       return client.hgetallAsync("awesomething:" + awesomeThing);
    }).then(function(things){ // all results ready 
         console.log(things); // log them
         res.send(JSON.stringify(things)); // send them
         return things; // so you can use from outside
    });
};

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SwiftUI에서 비동기 요청이 완료된 후 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

루프의 모든 비동기 호출이 완료된 후 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

JavaFX에서 SequentialTransition이 완료된 후에 만 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

useEffect에서 상태 설정이 완료된 후 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

서비스에서 비동기 호출이 완료된 경우에만 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

React Native로 제출 한 후 useEffect에서 비동기 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

for 루프에서 매번 비동기 완료를 강제하고 전역 변수를 수정하는 방법은 무엇입니까?

분류에서Dev

for 루프에서 비동기 쿼리가 완료되기를 기다리는 방법은 무엇입니까?

분류에서Dev

비동기 함수의 메인 스레드에서 완료를 호출하는 이유는 무엇입니까?

분류에서Dev

Angular 2 구독을 두 번 완료 한 후 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

루프에 들어가기 전에 중첩 루프 내부에서 호출되는 함수를 선택하는 방법은 무엇입니까?

분류에서Dev

ajax 요청이 완료된 후 1 초 후에 함수를 재귀 적으로 호출하는 방법은 무엇입니까?

분류에서Dev

synchronus 함수에서 비동기 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

JavaScript에서 다른 함수가 완전히 완료된 후에 만 함수를 시작하는 방법은 무엇입니까?

분류에서Dev

Lisp의 for 루프 내에서 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

for 루프 내에서 재귀 함수를 올바르게 호출하는 방법은 무엇입니까?

분류에서Dev

Promise를 사용하여 함수 종료 내에서 이벤트를 기다린 다음이 함수를 다시 호출하는 방법은 무엇입니까?

분류에서Dev

PHP에서 완료되는 것을 기다리지 않고 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

for 루프 완료 후 함수 호출

분류에서Dev

React : 다른 함수가 완전히 완료된 후에 강제로 함수를 실행하는 방법은 무엇입니까?

분류에서Dev

JQuery : ajax 호출 완료 후 각 루프를 콜백하는 방법은 무엇입니까?

분류에서Dev

비동기 수신자가 완료된 후 위젯을 업데이트하는 방법은 무엇입니까?

분류에서Dev

JavaScript : 비동기 내부 함수 내에서 외부 함수를 반환하는 방법은 무엇입니까?

분류에서Dev

for 루프가 모든 비동기 함수가 완료 될 때까지 기다리도록하는 방법. 비동기 함수에는 내부에 여러 비동기 함수가 있습니다.

분류에서Dev

자체 호출 비동기 함수 안에 인수를 삽입하는 방법은 무엇입니까?

분류에서Dev

반환하기 전에 mongoose .exec () 함수가 완료되기를 기다리는 방법은 무엇입니까?

분류에서Dev

비동기 함수 내에서 React setState () 호출을 일괄 처리하는 방법은 무엇입니까?

분류에서Dev

pyspark의 루프 내에서 동적 사용자 지정 함수를 만드는 방법은 무엇입니까?

분류에서Dev

Await 함수가 완료된 후에 만 코드 실행을 보장하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    SwiftUI에서 비동기 요청이 완료된 후 함수를 호출하는 방법은 무엇입니까?

  2. 2

    루프의 모든 비동기 호출이 완료된 후 함수를 호출하는 방법은 무엇입니까?

  3. 3

    JavaFX에서 SequentialTransition이 완료된 후에 만 함수를 호출하는 방법은 무엇입니까?

  4. 4

    useEffect에서 상태 설정이 완료된 후 함수를 호출하는 방법은 무엇입니까?

  5. 5

    서비스에서 비동기 호출이 완료된 경우에만 함수를 호출하는 방법은 무엇입니까?

  6. 6

    React Native로 제출 한 후 useEffect에서 비동기 함수를 호출하는 방법은 무엇입니까?

  7. 7

    for 루프에서 매번 비동기 완료를 강제하고 전역 변수를 수정하는 방법은 무엇입니까?

  8. 8

    for 루프에서 비동기 쿼리가 완료되기를 기다리는 방법은 무엇입니까?

  9. 9

    비동기 함수의 메인 스레드에서 완료를 호출하는 이유는 무엇입니까?

  10. 10

    Angular 2 구독을 두 번 완료 한 후 함수를 호출하는 방법은 무엇입니까?

  11. 11

    루프에 들어가기 전에 중첩 루프 내부에서 호출되는 함수를 선택하는 방법은 무엇입니까?

  12. 12

    ajax 요청이 완료된 후 1 초 후에 함수를 재귀 적으로 호출하는 방법은 무엇입니까?

  13. 13

    synchronus 함수에서 비동기 함수를 호출하는 방법은 무엇입니까?

  14. 14

    JavaScript에서 다른 함수가 완전히 완료된 후에 만 함수를 시작하는 방법은 무엇입니까?

  15. 15

    Lisp의 for 루프 내에서 함수를 호출하는 방법은 무엇입니까?

  16. 16

    for 루프 내에서 재귀 함수를 올바르게 호출하는 방법은 무엇입니까?

  17. 17

    Promise를 사용하여 함수 종료 내에서 이벤트를 기다린 다음이 함수를 다시 호출하는 방법은 무엇입니까?

  18. 18

    PHP에서 완료되는 것을 기다리지 않고 함수를 호출하는 방법은 무엇입니까?

  19. 19

    for 루프 완료 후 함수 호출

  20. 20

    React : 다른 함수가 완전히 완료된 후에 강제로 함수를 실행하는 방법은 무엇입니까?

  21. 21

    JQuery : ajax 호출 완료 후 각 루프를 콜백하는 방법은 무엇입니까?

  22. 22

    비동기 수신자가 완료된 후 위젯을 업데이트하는 방법은 무엇입니까?

  23. 23

    JavaScript : 비동기 내부 함수 내에서 외부 함수를 반환하는 방법은 무엇입니까?

  24. 24

    for 루프가 모든 비동기 함수가 완료 될 때까지 기다리도록하는 방법. 비동기 함수에는 내부에 여러 비동기 함수가 있습니다.

  25. 25

    자체 호출 비동기 함수 안에 인수를 삽입하는 방법은 무엇입니까?

  26. 26

    반환하기 전에 mongoose .exec () 함수가 완료되기를 기다리는 방법은 무엇입니까?

  27. 27

    비동기 함수 내에서 React setState () 호출을 일괄 처리하는 방법은 무엇입니까?

  28. 28

    pyspark의 루프 내에서 동적 사용자 지정 함수를 만드는 방법은 무엇입니까?

  29. 29

    Await 함수가 완료된 후에 만 코드 실행을 보장하는 방법은 무엇입니까?

뜨겁다태그

보관