문제점 : REST API 호출에서 데이터를 가져 와서이를 변수에 할당하고이를 다른 함수 또는 용도의 입력으로 사용하려고합니다.REST YOUTUBE DATA API 3의 데이터를 콜백 외부 변수에 지정 함수 Jquery
기능 : 내가
var title = getSongName(youtubeID, function(name) {
console.log("song name is :"+name);
});
와 다른 장소에서이 함수를 호출하고
function getSongName(id, callback) {
var apikey = {My_TOKEN};
var fetchInformation = "https://www.googleapis.com/youtube/v3/videos?key=" +apikey +"&fields=items(snippet(title" +"))&part=snippet&id=" +id;
$.getJSON(fetchInformation, function (jsonData) {
fullname = jsonData.items[0].snippet.title;
callback(fullname);
});
}
필요에 따라 내가 CONSOLE.LOG의 값을 얻는다. 는 지금은 j
그래서 나는 "getSongName"호출 내에서 사용할 수없는 다른 장소에서오고 여기
z.innerHTML = '<b>' + title + 'num: ' + j + '</b>';
에서이 제목을 사용하고 싶습니다.
내부에는 console.log
을 수행하는 것이 아니라 실제로 다른 변수에 "이름"을 할당하고 내가 원하는 것처럼 사용합니까?
이 작업을 수행하는 또 다른 방법이 있는지 모르겠지만 어떤 도움도 받으실 수 없습니다.
이 해결 ----------- STEPS 내가 나에게 값을 얻기 위해 위의 함수를 호출 루프에서 실행되는 다른 함수 내에서 다음
function getSongName(youtubeID, idForPlayer,i, z, callback) {
var apikey = {My_TOKEN};
var fetchInformation = "https://www.googleapis.com/youtube/v3/videos?key=" +apikey +"&fields=items(snippet(title" +"))&part=snippet&id=" +id;
//$.ajaxSetup({'async':false}); WILL return the value for each loop and not do it asynchronously which had me pulling my hair out. P.S. this was the reason only one value was being returned
$.ajaxSetup({'async':false});
$.getJSON(fetchInformation, function (jsonData) {
debugger;
var fullname = jsonData.items[0].snippet.title;
boolean = false;
if (fullname) {
boolean = true;
if (boolean){
console.log("song name inside the gerSongName loop is: " + i +" ", fullname);
callback(fullname);
}
debugger;
}
else {
debugger;
console.log("No song name");
}
});
}
아래에 언급.
getSongName(youtubeID, idForPlayer,i, z, function(name) {
z.innerHTML = '<b>' + name + '</b>';
debugger;
document.getElementById('elementTagID').appendChild(z);
});
희망이 있으면 다른 사람에게 도움이됩니다. 감사합니다.
[비동기 호출의 응답을 어떻게 반환합니까?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)의 가능한 복제본) –