0
我在設置變量時遇到問題,或者至少在異步瀑布中返回它。我知道你不能以異步方式返回,但是我對我的變量jsonFinal
做了回調,它進入了下面的數據下的函數。如何設置變量異步瀑布?
function getIndividualMatchJSONObjHelper(matchData, matchParticipantData, indexIter) {
var individualMatchURL = 'https://na1.api.riotgames.com/lol/match/v3/matches/' + matchData.matchID[indexIter] + '?api_key=' + API_KEY;
var jsonFinal;
async.waterfall([
function(callback) {
request(individualMatchURL, function(err, response, body) {
if(!err && response.statusCode == 200) {
var json = JSON.parse(body);
for (var j = 0; j < 10; j++) {
if (matchData.championID[indexIter] == json['participants'][j].championId) {
jsonFinal = json['participants'][j];
callback(null, jsonFinal);
}
}
}
else {
console.log(err);
}
});
}
],
function(err, data) {
if(err) {
console.log(err);
}
else {
jsonFinal = data;
}
});
console.log(jsonFinal);
return jsonFinal;
}
我該如何獲得正確返回jsonFinal的函數?
感謝您的回覆。但問題是,當我將它存儲到一個變量中時,打印出來時我仍然未定義。你確定它回來了嗎?這裏是如何存儲變量: 'matchParticipantData.specificParticipantData [i] = getIndividualMatchJSONObjHelper(matchData,matchParticipantData,i,function(err,json){});' –
再次*您只能獲取回調中的變量與任何異步操作*。你的函數不會返回任何東西,但它提供了一個回調函數,當它的異步操作完成時,它有一個參數'json'。檢查了它。 – Mikey
非常感謝!你幫助我更好地理解回調。但我只關心一件事。我注意到打印對象 'matchParticipantData.specificParticipantData [i]'不包含函數後面的json。我用一個變量在函數中進行了測試,但沒有在其外部進行測試。是否有一個原因?當json被設置時,我需要它在函數的外部 –