2016-11-01 11 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 FYI

が見つかりません:ハンドラは、[ 'ハイ'] リスナーで、アレクサから自動的に呼び出されます。私はリクエストブロックの外側でこのポインタにアクセスできます。

私は別の答えを読みましたが、誰も私の質問に答えていません。助けてください、私はどのように私は "この"応答に内部にアクセスすることができます。

+0

の可能性のある重複した[ "この" キーワードの作業を行う方法は?](http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) –

+0

されているのはなぜ'response'があなたのスコープ内のプレーンな変数であるときに' this.response'(プロパティアクセス)を使用していますか?しかし、ええ、それは、どのような '再予約'と 'this.emit'が想定されているかは不明です。 – Bergi

+0

@Bergi、これ(this.emit、this.response)はalexa-sdkのものです。 –

答えて

0

あなたの質問は本当にjavascriptの質問です。 js 'this'は異なっていて、c/C++のような言語や、ここで遭遇している問題に慣れているかもしれません - コールバックの中から 'this'にアクセスするのはよくある質問です。例えば、

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

関連する問題