节点变量范围

时间:2016-08-15 22:27:58

标签: javascript json node.js curl

所以这看起来像是一个基本的东西,但本周已经多次为我结束了多次工作。如何在函数中定义变量并使其在所述函数之外可用。

var variables = { initial: 'To Start'};
var curl = require('curlrequest');


var options = {
   url: 'www.google.com',
   verbose: true,
   stderr: true
};

curl.request(options, function (err, data) {
   variables.testing123 = function() {return 'woking now';};
   variables.ting123 = 'I should be showing in console';
});

console.log(variables);

控制台输出:

{ initial: 'To Start' }

目标是卷曲网址并将返回的json存储到varialble中,以便在另一个函数中使用以排序最高分辨率并从可用数据构建下载列表。脚本的后半部分已准备好,但为了动态地执行此操作,我需要卷曲几个URL并为每个URL过滤json。

1 个答案:

答案 0 :(得分:0)

您传递给curl.request的函数是异步计算的,因此在请求完成后您想要运行的任何内容都需要进入该函数。

var curl = require('curlrequest');
var variables = { initial: 'To Start'};
var options = {
   url: 'www.google.com',
   verbose: true,
   stderr: true
};

curl.request(options, function (err, data) {
   variables.testing123 = function() {return 'woking now';};
   variables.ting123 = 'I should be showing in console';
   console.log(variables);
});

如果您要处理大量请求,可以使用promises,或执行以下操作:

curl.request(options1, process);
curl.request(options2, process);
curl.request(options3, process);
var requestsProcessed = 0;
var results = [];
function process(err, data) {
    results.push(data);
    requestsProcessed++;
    if (requestsProcessed === 3) {
        // do something
    }
}