다음 코드 조각에는 버그가 있지만 흥미로운 질문이 열렸습니다. 그것의 약속을 반환 각도의 $ HTTP 서비스를 사용하여. 일단 해결되면 콜백 함수는 s1 변수에 액세스 할 수 없습니다.콜백 함수가 클로저 변수에 액세스합니까?
var ids = [];
ids = ['81074'];
// show what's in
for (var s=0;s<ids.length;s++) {
var s1 = s;
$http.get('http://mydomain.com/api/catalog/product/' + ids[s]).
success(function(data) {
// console.log(s1); <--- reference error
$scope.products[s].setProductData(data);
}).error(function(err){
console.log('--------- error',err);
});
};
(S1)는 ReferenceError가 있습니다 : (S1)는 항상 1
그리고 흥미롭게도, 그것은 루프 변수들에 대한 액세스 권한을 가지고 디버거, 정의되어 있지 않습니다 - 약속이 후 해결되었다 때문에, 예상대로 그 증가 (따라서 버그 BTW)
누군가가 왜 설명 할 수 있습니까?
감사
리 오르
's1'을 사용하지 못하고 어디에서 오류가 발생합니까? – Barmar
코드가 정의 된 후 s1을 참조하지 않습니다. 참조 오류가 발생하는 이유는 무엇입니까? – KevSheedy
콜백 내부에서 디버거에서 s1을 확인했습니다. 코드가 편집되었습니다. 비고에 대한 감사합니다 – Lior