我正在实现一个第三方JavaScript库的回调,我需要返回值,但我需要从服务器获取值。我需要做这样的事情:
3rdPartyObject.getCustomValue = function { return $.getJSON('myUrl'); }
getJson使用XMLHttpRequest(我相信)有同步和异步的行为,我可以使用同步的行为吗?
解决方法
看看jQuery源代码,这是所有$ .getJSON:
getJSON: function( url,data,callback ) { return jQuery.get(url,callback,"json"); },
这是所有$ .get:
get: function( url,type ) { // shift arguments if data argument was omitted if ( jQuery.isFunction( data ) ) { callback = data; data = null; } return jQuery.ajax({ type: "GET",url: url,data: data,success: callback,dataType: type }); },
没有黑魔法。因为你需要定制非基本的$ .getJSON功能,你可以使用底层的$ .ajax函数,并将async option作为false:
$.ajax({ type: 'GET',url: 'whatever',dataType: 'json',success: function() { },data: {},async: false });