Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 React.js:为什么状态未定义?_Javascript_Node.js_Reactjs_Promise - Fatal编程技术网

Javascript React.js:为什么状态未定义?

Javascript React.js:为什么状态未定义?,javascript,node.js,reactjs,promise,Javascript,Node.js,Reactjs,Promise,我需要在脚本的每次迭代中写入状态信息。如何正确地做 getPageLink(一){ 如果(i>0){ console.log(this.state.res)//aaa 新承诺((解决、拒绝)=>{ 请求(this.props.catalogLinks[i],函数(错误、响应、html){ 如果(!error&&response.statusCode==200){ var$=cheerio.load(html); $('.post\u title\u link')。每个(函数(i,元素){ co

我需要在脚本的每次迭代中写入状态信息。如何正确地做

getPageLink(一){
如果(i>0){
console.log(this.state.res)//aaa
新承诺((解决、拒绝)=>{
请求(this.props.catalogLinks[i],函数(错误、响应、html){
如果(!error&&response.statusCode==200){
var$=cheerio.load(html);
$('.post\u title\u link')。每个(函数(i,元素){
console.log(this.state.res)//未定义
});
决议(“结果”);
}否则{
console.log('sss',this.state.res)//未定义
拒绝(“结果”);
}
});
}).那么(
结果=>{
this.getPageLink(--i)
},
错误=>{
this.getPageLink(--i)
}
);
}

}
正在回调中被覆盖。您应该将其值放入另一个变量中,如下所示:

var that = this;
然后使用从那时起:

getPageLink(一){
如果(i>0){
console.log(this.state.res)
var=这个;
新承诺((解决、拒绝)=>{
请求(this.props.catalogLinks[i],函数(错误、响应、html){
如果(!error&&response.statusCode==200){
var$=cheerio.load(html);
$('.post\u title\u link')。每个(函数(i,元素){
console.log(that.state.res)
});
决议(“结果”);
}否则{
console.log('sss',that.state.res)
拒绝(“结果”);
}
});
}).那么(
结果=>{
this.getPageLink(--i)
},
错误=>{
this.getPageLink(--i)
}
);
}

}
定义回调函数时,必须使用箭头符号
()=>{}

request(this.props.catalogLinks[i], (error, response, html) => {
       if (!error && response.statusCode == 200) {
          var $ = cheerio.load(html);
          $('.post__title_link').each((i, element) => {
              console.log(this.state.res) // will be defined
          });
          resolve("result");
       } else {
          console.log('sss', this.state.res) // will be defined
          reject("result");
       }
});

这是一个糟糕的模式。处理嵌套范围的正确方法是使用胖箭头函数。