如何更新全局对象

How to update global object

本文关键字:全局 对象 更新 何更新      更新时间:2023-09-26

I正在尝试在nightmarejs评估函数内运行外部函数。。。正如你可以在下面看到我的代码。。。

function get_my_links(url){
    vo(function* () {
    var nightmare = Nightmare();    
    var href_link = []; // i have tried making it as global without var but did not work
    var title = yield nightmare
    .goto('https://examply/'+url)
    .evaluate(function (href_link,url,get_my_links) {
        $('.myclass').each(function() {
            href_link.push($(this).attr("href"));
        });
        if($.isNumeric($("#someid").val()))
        {
            get_my_links(1)
        }
        else{
            return href_link;
        }
    },href_link,url);
    console.log(title);
    yield nightmare.end();
    })(function (err, result) {
    if (err) return console.log(err);
    });
}
get_my_links(0)

通过上面的代码,我正在尝试更新href_link。。。1) 如何使其成为全局对象,以便每次调用函数时都将新值与现有值相加?

1st原因// i have tried making it as global without var but did not work不起作用,因为尽管您将对象设置为全局对象,但每次调用get_my_links函数时,它都会将全局对象更新为空数组。

对于您的用例,在定义get_my_links函数之前先定义href_link。像

var href_link =[];
function get_my_links() {
...
}

在函数定义后定义href_link,如->

function get_my_links() {
...
}
var href_link =[];

由于提升,将在get_my_links函数内抛出一个未定义href_link值的错误,这一定是您在上面的评论中提到的情况。

electron使用node.js,因此您可以使用node.jss的全局对象来存储值。

https://nodejs.org/api/globals.html#globals_global

当您使用此解决方案时,您应该能够从应用程序的其他部分访问价值。