Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 这有什么问题?尝试在原型中使用请求回调…但收效甚微_Javascript_Node.js_Request_Cheerio - Fatal编程技术网

Javascript 这有什么问题?尝试在原型中使用请求回调…但收效甚微

Javascript 这有什么问题?尝试在原型中使用请求回调…但收效甚微,javascript,node.js,request,cheerio,Javascript,Node.js,Request,Cheerio,这就是我如何尝试使用Node.js with request和Cheerio从一系列网页中提取一些元素的回调请求。最初,我使用的基本逻辑只不过是一个函数。然而,我正试图使其更加面向对象,显然失败得很惨。由于这种逻辑以前是有效的,我完全搞不懂为什么它现在不起作用 提前感谢您的帮助 要点:您的问题之一在这里,第82行: if (!error) { var $ = cheerio.load(body); // get properties from the html this

这就是我如何尝试使用Node.js with request和Cheerio从一系列网页中提取一些元素的回调请求。最初,我使用的基本逻辑只不过是一个函数。然而,我正试图使其更加面向对象,显然失败得很惨。由于这种逻辑以前是有效的,我完全搞不懂为什么它现在不起作用

提前感谢您的帮助


要点:

您的问题之一在这里,第82行:

if (!error) {
    var $ = cheerio.load(body);

    // get properties from the html
    this.name_river.get($);
    this.name_reach.get($);
    this.difficulty.get($);
    this.length.get($);

}
该内部回调函数没有绑定到相同的作用域,因此
不是
Reach
实例

您需要获取一个引用并使用它:

function Reach(reach_id) {
    /* ...  */

    var self = this;
    this.request = request(url_root + this.reach_id, function (error, response, body) {
        /* ...  */
        self.name_river.get($);
        /* ...  */
    });
}
。。。或者显式地将其绑定到:

function Reach(reach_id) {
    /* ...  */

    this.request = request(url_root + this.reach_id, (function (error, response, body) {
        /* ...  */
        this.name_river.get($);
        /* ...  */
    }).bind(this));
}
MDN关于


另一个问题是这里的电话,第104行:

reach.request();
如果我读取正确,请求未设置为函数。第79行在实例创建期间执行请求:

this.request = request(url_root + this.reach_id, function (error, response, body) {

谢谢你花时间看这个。今晚我要看一看。非常感谢您提供的具体建议和参考,帮助我慢慢地(非常缓慢地)了解如何使用Python以外的语言编写代码。这个参考超出了范围,谢谢您的关注。我一直在看我的电脑太久了。然而,第二个问题,如何创建请求回调,我正在努力解决。你会有一个很好的参考或解释吗?另外,我更新了要点以反映这个参考的自我。我不是100%清楚你想对这个请求做什么,你能详细说明吗?