js使用jsonp跨域回调实例(异步结果一致性)

因为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函数时,可以多加一个索引参数,最后并把所传参数再返回,记录当前回调的是第几次请求,再进行顺序的修改或其他操作,可保证结果一致性。

你可能感兴趣的:(前端)