2016-11-01 4 views
0

Alexa 스킬을 연구하고 Node.js를 사용하여 람다 함수를 작성하고 있습니다. 또한 Alexa의 요청과 응답을 처리하기 위해 Alexa SDK을 사용하고 있습니다. 내가 직면 한 문제는 "this pointer"에 액세스 할 수 없다는 것입니다.http 요청의 응답에서 'this'에 액세스 중 | Node.js

var handler = Alexa.CreateStateHandler(); 
handler['hi'] = function() { 

console.log("hi intent"); 

    request(url, function (error, response, body) { 

     const message = "Hello there. Best of luck!"; 
     const reprompt = "Hello there."; 

     this.response.speak(message).listen(reprompt); 
     this.emit(':responseReady'); 
    });   
}; 

오류 : this.response는 참고

를 찾을 수 없습니다 코드가 같다 핸들러 [ '안녕하세요']는 리스너과 알렉사에서 자동으로 호출됩니다. 요청 블록 밖에서이 포인터에 액세스 할 수 있습니다.

다른 답변을 읽었으나 아무도 내 질문에 답변하지 않았습니다. 제발, 어떻게 내가이 "내부"응답에 액세스 할 수 있습니다.

+0

[?은 "이"키워드의 작동 방식을 않습니다 (http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) –

+0

는 왜의 가능한 중복 당신은'response'가 당신의 범위에서 일반 변수 일 때'this.response' (속성 접근)을 사용하고 있습니까? 그러나 예,'재언정'과'이 .emit'이 있어야 할 것이 명확하지 않습니다. – Bergi

+0

@Bergi, this (this.emit, this.response)는 alexa-sdk 것입니다. –

답변

0

귀하의 질문은 정말 자바 스크립트 질문입니다. js 'this'는 다른 경우 c/C++와 같은 언어에서 익숙해 질 수 있으며 여기에서 발생하는 문제 - 콜백 내에서 this에 액세스하는 것이 일반적인 js 함정이므로 이미 잘 대답되었습니다. 예 :

How to access the correct `this` context inside a callback?