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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值