Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问';这';在http请求中';s响应| Node.js_Javascript_Node.js_This Pointer - Fatal编程技术网

Javascript 访问';这';在http请求中';s响应| Node.js

Javascript 访问';这';在http请求中';s响应| Node.js,javascript,node.js,this-pointer,Javascript,Node.js,This Pointer,我正在使用Alexa skill并使用Node.js编写lambda函数。我还使用Alexa SDK处理Alexa的请求和响应。 我面临的问题是,我无法访问“此指针”作为响应。代码如下: var handler = Alexa.CreateStateHandler(); handler['hi'] = function( ) { console.log("hi intent"); request(url, function (error, response, body) {

我正在使用Alexa skill并使用Node.js编写lambda函数。我还使用Alexa SDK处理Alexa的请求和响应。 我面临的问题是,我无法访问“此指针”作为响应。代码如下:

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');
    });        
};
错误:未找到此响应

仅供参考:handler['hi']是一个侦听器,从Alexa自动调用。我可以在请求块外访问此指针


我读了不同的答案,但没有一个能回答我的问题。请帮助,我如何访问“this”内部响应。

您的问题实际上是一个javascript问题。js“this”与您可能习惯的c/c++等语言不同,您在这里遇到的问题——从回调中访问“this”——是一个常见的js陷阱,因此它已经得到了很好的回答,例如


你的问题实际上是一个javascript问题。js“this”与您可能习惯的c/c++等语言不同,您在这里遇到的问题——从回调中访问“this”——是一个常见的js陷阱,因此它已经得到了很好的回答,例如


response
在您的范围内是一个普通变量时,为什么要使用
this.response
(属性访问)的可能重复?但是是的,现在还不清楚
reprompt
this.emit
应该是什么。@Bergi,this(this.emit,this.response)是alexa sdk的东西。所以你不能只使用
handler.emit
handler.response
?假设
hi
方法中的
this===handler
。尝试将
console.log(“hi intent”)
替换为
console.log(this)
,如果
this
记录的是带有
response
emit
,则可以
绑定您的回调,然后可以执行请求(url,callbackinded)当
response
在您的作用域中是一个普通变量时,为什么要使用
this.response
(属性访问)的可能重复?但是是的,现在还不清楚
reprompt
this.emit
应该是什么。@Bergi,this(this.emit,this.response)是alexa sdk的东西。所以你不能只使用
handler.emit
handler.response
?假设
hi
方法中的
this===handler
。尝试将
console.log(“hi intent”)
替换为
console.log(this)
,如果
this
记录的是带有
response
emit
,则可以
绑定您的回调,然后可以执行请求(url,callbackinded)