无法在onResourceRequested的回调函数内访问变量

时间:2018-03-29 21:04:44

标签: javascript node.js phantomjs

如何将变量从外部传递给onResourceRequested函数? 我无法访问testvar属性的回调函数中的变量onResourceRequested

知道如何解决这个问题吗?

以下是我用于测试的示例代码

var phantom = require("phantom");

var _ph, _page, _outObj;



phantom.create().then(function(ph){
    _ph = ph;
    return _ph.createPage();
}).then(function(page){
    _page = page;
    var testvar = "WHY THIS IS NOT PRINTING";

    _page.property('onResourceRequested', function (req, networkRequest) {
        console.log("THIS LINE WORKS");
        console.log(testvar); // THIS DOESNT WORK
    }); 

    _page.property('onResourceReceived', function (res) {
         //console.log('received: ' + JSON.stringify(res, undefined, 4));
    });

    return _page.open('https://www.ammaus.com/', function (status) {
        if (status !== 'success') {
            console.log('FAIL to load the address');
        }
        _ph.exit();
    });

}).then(function(status){
    console.log(status);
    return _page.property('content')
}).then(function(content){
    _page.close();
    _ph.exit();
}).catch(function(e){
   console.log(e); 
});

1 个答案:

答案 0 :(得分:1)

使用箭头功能(ES6),如下所示:

_page.property('onResourceRequested', (req, networkRequest) => {
    console.log("THIS LINE WORKS");
    console.log(testvar); // THIS DOESNT WORK
});

当箭头函数在全局上下文中执行时,它不会重新定义自己的this;相反,使用封闭执行上下文的this值,相当于将其视为闭包值。