0

評価関数内で外部関数を実行しようとしてい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)関数が呼び出されるたびに新しい値が既存の値に追加されるように、グローバルオブジェクトにする方法は?

4

2 に答える 2

2

第1の理由 // 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 の未定義の値のエラーがスローされます。

于 2015-11-15T02:31:31.297 に答える
0

electron は node.js を使用しているため、node.js のグローバル オブジェクトを使用して値を格納できます。

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

このソリューションを使用すると、アプリの他の部分からも値にアクセスできるはずです。

于 2015-11-16T19:03:07.157 に答える