如何更新全局对象

时间:2015-11-14 18:09:49

标签: javascript jquery node.js electron nightmare

我试图在.PHONY: all clean BIN = ../exe CXX = g++5 CFLAGS = -Wall -Og -g3 -ggdb -pipe -march=i686 -std=c++17 CPP=FILES.cpp all: $(BIN) clean: @echo Delete .obj files @rm -f *.o %.o: %.cpp @echo Compiling $* @$(CXX) $(CFLAGS) -c $^ -o $@ $(BIN): $(CPP:%.cpp=%.o) @echo Link executable @$(CXX) $(CFLAGS) -o $(BIN) 评估函数中运行外部函数...正如您可以在下面看到我的代码...

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) ... 1)如何使它成为Global对象,以便每次调用函数时都应该使用现有值添加新值?

2 个答案:

答案 0 :(得分:2)

第一个原因       // 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值的错误,因为吊装必须是您在上面评论中提到的情况。

答案 1 :(得分:0)

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

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

使用此解决方案时,您应该也可以从应用的其他部分访问该值。