另一個問題......我有2個功能:如何減慢代碼?
function(data, callback){ //F1
var URL = 'url';
request(URL, function(err, response, body) {
if(response.statusCode == 200){
var json = JSON.parse(body);
var chid = [];
for(var i = 0; i < json['champions'].length;i++){
chid.push(json['champions'][i].id);
}
data.rotation = chid;
free = chid;
callback(null, data);
}
});
},
function(data, callback) { //f2
for (var r=0; r<10; r++){
var URL = 'url';
request(URL,function(err, response, body) {
if(response.statusCode == 200){
var json = JSON.parse(body);
x.push(json.name);
data.rot = x;
}
})
}
callback(null, data);
},
隨着F1一切正常。如果我撥打console.log(free)
或console.log(data.rotation)
我得到了我想要的數組。
功能2有點問題。數據不可用於for循環之外。如果我在循環外調用console.log(data.rot)
或console.log(x)
,它表示它是未定義的,所以我無法使用手柄。我不知道這是關於callback(null, data)
位置還是關於for-loop。我無法單獨處理它。
如何訪問for循環之外的數據?可能回調被稱爲比所有請求都快。如何減慢速度並使其工作?
這是一個異步API。 – Pointy
請參閱[這個答案](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call/14220323#14220323) – peteb