0
我读书用fs.readFileSync并获得每个文档,我正在使用的客户休息API调用JSON文件添加检索响应作为元素。员额。一旦我得到响应,我想将接收到的内容放入另一个JSON文件,该文件是输入JSON的副本,除了从client.post调用接收的数据之外的附加元素。不过可能是因为client.post的异步性质,我无法添加元素来输出JSON。我是NodeJS的新手。你能帮我找我失踪的地方吗?下面是代码和数据阅读的NodeJS文件,使节点休息客户端调用来获取相关的数据和JSON
数据:
[
{
"ticker": "CLYD"
},
{
"ticker": "EGH"
}
]
代码:
var fs = require('fs');
var Client = require('node-rest-client').Client;
var data = fs.readFileSync(__dirname + "/data/stocks.json", "utf8");
processData(data);
function processData (data) {
var obj = JSON.parse(data);
for (j = 0; j < obj.length; j++) {
obj[j].stockInformation = getValuesForTicker (obj[j].ticker.trim());
}
var jsonOutput = JSON.stringify(obj,null,'\t');
fs.writeFileSync(__dirname + "/data/response.json", jsonOutput);
};
function getValuesForTicker (ticker) {
/**
* More details and samples at https://www.npmjs.com/package/node-rest-client
*/
var client = new Client();
var values;
// set content-type header and data as json in args parameter
var args = {
data: { "ticker" : ticker},
headers: { "Content-Type": "application/json", "Accept" : "application/json" }
};
var responseToRequest = client.post("https://url.providing.response.as.json.content/", args, function (data, response) {
// parsed response body as js object
values = JSON.parse(JSON.stringify(data)).price;
});
return values;
};
谢谢你Minkesh。我试过你给出的代码,但不能使用'obj [j] .stockInformation = val'部分代码。我认为对于一个异步调用,obj [j]超出范围。我试图找出一个办法,我可以设置返回值回OBJ [J] – user1998463
事实上,for循环不等待的承诺,以解决(或者换句话说,异步调用来完成)。你可以使用'async'库来获得想要的结果。 https://github.com/caolan/async。更具体地说,你将不得不使用'async.each'方法。你也可以通过使用'Promise.all'来实现它。 –