JS: 비동기 실행 함수 에 매개 변 수 를 전달 합 니 다.
var rcds = [
'col_1',
'col_2',
'col_3',
'col_4',
'col_5',
'col_6',
'col_7',
]
var tasks = [];
for (var i = 0; i < rcds.length; i++) {
var rcd = rcds[i]
tasks.push(function(callback) {
request('http://localhost:8080', function(err, response, body) {
console.log(rcd);
callback(null);
});
});
}
async.parallel(tasks, function(err) {
if (err) {
throw err;
}
});
원래 실 행 된 결 과 는 출력
col_1
~ col_7
이 었 는데 결 과 를 보 니 7 개 col_7
가 나 왔 습 니 다.생각해 보 니 변수 rcd
가 비동기 로 실 행 될 때 할당 되 었 을 것 입 니 다. SO 에서 이 대답 을 보 았 습 니 다. 안에서 언급 한 것 에 따라 그 순환 을 이렇게 바 꾸 면 됩 니 다.for (var i = 0; i < rcds.length; i++) {
var rcd = rcds[i]
tasks.push(function(callback) {
var rcd = this.rcd;
request('http://localhost:8080', function(err, response, body) {
console.log(rcd);
callback(null);
});
}.bind({rcd: rcd}));
}
그 중에서
bind
를 사용 하여 외부 변수 rcd
의 값 을 리 셋 함수 에 연결 시 켰 고 다시 호출 할 때 변 하지 않 습 니 다.클 로 서 스 와 관련 이 있 는 것 같 습 니 다. 아직 모 르 겠 습 니 다. 뒤 돌아 보 세 요.또한 이 물건 을 재현 하려 고 시도 할 때 다른 해결 방법 을 발견 하 는 것 은 바로 사용
forEach
이다.rcds.forEach(function(rcd) {
tasks.push(function(callback) {
request('http://localhost:8080', function(err, response, body) {
console.log(rcd);
callback(null);
});
});
});
구체 적 인 원인 은 알 아 봐 야 지 ~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.