2017-03-08 1 views
0

를 디버깅하는 I에서이 문제를 찾을 수있는 다음과 같은 코드가 있습니다어떻게 자바 스크립트 함수

function something(callback) { 
    somethingElse(function(err, res) { 
    if (err) { 
     callback(err); 
    } 
    callback(null, res); 
    }); 
} 

something(function(err, res){ 
    console.log(err,res); 
}); 

//something else defined elsewhere 

내가 시작해야을? 나는 구문을 찾았고 모든 것이 잘 보이고 jsHint가 잡을 수있는 몇 가지 명백한 문제를 찾으려고 노력했다. 어디서부터 시작해야하며 어떤 개념을 사용해야합니까?

+2

에 비동기 가리키는 내부 this 포인터를 강제로 비동기 함수 뒤에 .bind(this)를 사용할 수 있습니까? – BenM

+0

들여 쓰기, 메모, 각 단계를 기록하고 단계가 기록되지 않으면 보통 그것이 고장 났음을 의미합니다. 또한 당신의 속기 조건을 막 사용하지 마십시오. – EasyBB

+0

개발자 콘솔은 somethingElse가 정의되지 않았고 사용할 somethingElse의 실제 구현이 없습니다. – Arihant

답변

0

제 생각에 그것은 점수 문제입니다. somethingElsesomething의 범위 내에서 사용할 수 없습니다. somethingElse이 동일한 범위에 정의되어있는 경우 something 끝에 .bind(this)을 추가하면 문제가 해결됩니다. 당신이 우리에게 somethingElse가 정의 특별히 더 많은 코드를 보여줄 수 있다면

function something(callback) { 
    somethingElse(function(err, res) { 
    if (err) callback(err); 
    callback(null, res); 
    }); 
}.bind(this) 

something(function(err, res){ 
    console.log(err,res); 
}); 

//something else defined elsewhere 

, 그 개발자 콘솔을 확인 우리가 당신

-1

당신이해야 할 첫 번째 일은 도움이됩니다 도움이 될 것입니다. Chrome 디버그 창은 아래 그림과 같습니다.

Javascript에서 디버그하는 가장 쉬운 방법은 breakpoint를 시뮬레이트하는 코드에 console.log를 넣는 것입니다.

비동기 함수를 사용할 때주의해야 할 점은 this 포인터이므로 쉽게 다른 범위를 가리킬 수 있습니다. 개발자 콘솔을 사용해보십시오

enter image description here