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'來實現它。 –