업데이트 대답은
getJSON
는 약속을 (A가 읽기 전용 연기)을 반환합니다. 그러나 약간의 후 처리가 필요하기 때문에 해결 된 값을 변경할 수있는 then
을 연결해야합니다.
// Now using `then`
function getThumbnail(vUrl){
return $.getJSON("http://api.embed.ly/1/oembed?key=:key&url="+vurl).then(function(data){
return {
thumbnail:data.thumbnail_url,
vurl:vurl
}
});
}
//and in your call will listen for the custom deferred's done
getThumbnail('the_vurl_').then(function(returndata){
//received data!
});
원래 대답
당신은 deferred object를 사용하고 done()
수신 할 수 있습니다.
function getThumbnail(vUrl) {
//create our deferred object
var def = $.Deferred();
//get our JSON and listen for done
$.getJSON("http://api.embed.ly/1/oembed?key=:key&url="+vurl)
.done(function(data){
//resolve the deferred, passing it our custom data
def.resolve({
thumbnail:data.thumbnail_url,
vurl:vurl
});
});
//return the deferred for listening
return def;
}
//and in your call will listen for the custom deferred's done
getThumbnail('the_vurl_')
.done(function(returndata){
//received data!
});
원시 데이터를 가져 오기 위해 $.getJSON
님을 연기 할 수 있습니다. 그러나 객체로의 "사후 처리"때문에 커스텀 지연이 필요합니다. 또한 getThumbnail()
에 콜백을 전달할 수 :
function getThumbnail(vUrl,callback) {
$.getJSON("http://api.embed.ly/1/oembed?key=:key&url="+vurl,function(returndata){
callback(returndata);
});
}
getThumbnail('the_vurl_',function(returndata){
//received data!
})
의
중복 가능성 [? Ajax 호출의 응답을 반환하는 방법 (http://stackoverflow.com/questions/14220321/how-to-return-the -response-from-a-ajax-call) – Bergi