因为js跨域仅能异步,所以操作返回值存在时间上的差异,故使用回调函数的方式解决,以下简单示例:
domain(val,function(json){
console.log(json);
})
var domain = function(val, callback) {
//瞎写的链接
var url = 'http:/www.baidu.com?val=val&output=jsonp';
return correct(url, callback);
}
var correct = function(address, callback) {
$.ajax({
type : "get",
async: false,
url : address,
dataType : "jsonp",
jsonp: "callback",
success : function(json) {
console.log(json);
callback && callback(json);
},
error: function(e) {
console.log(e);
}
});
/* script标签跨域请求
var script = document.createElement('script');
script.src = address;
document.body.appendChild(script);*/
}
如果实际项目中存在循环请求,跨域又为异步,那么,在调用domain函数时,可以多加一个索引参数,最后并把所传参数再返回,记录当前回调的是第几次请求,再进行顺序的修改或其他操作,可保证结果一致性。