2017-10-13 6 views
0

나는 (Pro Node)와 같은 코드를 보았습니다. 그것은 async 라이브러리를 사용합니다. 내가 그것을 실행하면JS 비동기 라이브러리에서 콜백 인수는 무엇을합니까?

var async = require("async"); 
async.series([ 
    function(callback) { 
    setTimeout(function() { 
     console.log("Task 1"); 
     callback(null, 1); 
}, 300); }, 
    function(callback) { 
    setTimeout(function() { 
     console.log("Task 2"); 
     callback(null, 2); 
    }, 200); 
    }, 
    function(callback) { 
    setTimeout(function() { 
     console.log("Task 3"); 
     callback(null, 3); 
}, 100); } 
], function(error, results) { 
    console.log(results); 
}); 

, 그것은 보여줍니다

Task 1 
Task 2 
Task 3 
[ 1, 2, 3 ] 

모두 잘 - 그러나, 나는 꽤 콜백 라인이 무엇인지 이해가 안 : callback(null, 1), callback(null, 2)callback(null, 3).

내가 그 라인을 모두 제거하면, 내가 코드를 실행하는 경우에만 반환

Task 1 

무엇 제 1 및 제 2 인수 할 이유 두 번째 인수 1, 23은 무엇입니까?

+0

async.js가없는 콜백을 알고 있습니까? 네이티브 노드 함수에서 콜백이 어떻게 작동하는지 알고 있습니까? – Bergi

+0

@Bergi, 나는 친숙하지 않다. 나는'fetch'로 콜백을 사용했지만, 아직 탐색하지 않았습니다. 이것이 비동기적인 것이거나 더 넓은 자바 스크립트 일지 나는 확신하지 못했다. – Iggy

+0

그럴 경우보다 일반적인 튜토리얼을 먼저 읽고 싶을 것입니다. nodej에서 콜백이 작동하는 방법에 대해 수십 가지가 있습니다. [this one] (https://eloquentjavascript.net/20_node.html). 노드 콜백에 ​​두 개의 매개 변수가있는 이유에 대한 자세한 내용은 [이 질문] (https://stackoverflow.com/q/40511513/1048572) – Bergi

답변

1

비동기 라이브러리에서 의 async.series 콜백 함수를 호출하면 배열의 다음 함수가 실행됩니다. 첫 x 째 매개 변수는 오류 데이터입니다. 모든 오류가 콜백 함수에 first parameter 인 노드 규칙입니다. 두 번째 매개 변수는 성공 데이터이며 async.series 콜백의 두 번째 매개 변수로 모든 성공 데이터의 배열로 전달됩니다.

노드가 오류 첫 번째 콜백을 선호하는 이유에 대한 자세한 내용은 this answer을 참조하십시오.

+0

을 참조하십시오. 따라서 첫 번째 인수는 오류이고 두 번째 인수는 오류를 반환합니다. 매우 명확합니다 - 지금은 이해합니다. 너무 감사합니다!! – Iggy