javascript - js等待回应
PHPz
PHPz 2017-04-11 10:58:04
[JavaScript讨论组]

在js中如何实现在后台没有返回数据的时候做另一件事情?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHPz

在你使用类似ajax之类的函数的时候,默认是异步回调执行的,你可以通过callback传入完成之后要调用的函数。
你调用ajax函数本来就不会阻塞执行,因此,你可以在发起ajax请求之前播放加载动画,而传入ajax的callback事件里停止动画。

补充

jqueryajax请求默认是异步的,需要传入参数async:true来手动指明为异步操作。感谢评论区 @SevenOutman 提醒。

代码

完整代码可能如下:

$.ajax({
    url: "something.url",
    async: true, //异步请求
    beforeSend: function(xhr) {
        loading('start');
    },
    complete: function(xhr, TS) {
        loading('end');
    }
});
ringa_lee

我觉得就是一个if,else问题

if(data){
//有数据执行……
} else {
//无数据执行……
}

希望对你有帮助

大家讲道理

粗略想想,应该有两种情况:

  1. 后台返回错误

  2. 后台连接超时

但无论是哪种情况,在前端都是可以捕获到的,只要捕获到错误时处理你说的“另一件事”就好了。所以你的问题是?

补充:

按照你提供的新需求,假设你的ajax使用jquery发送,代码可以这样写:

var a = function(){
    //TBD, the loading stuff
};

var b = function(){
    //TBD, the callback to be executed after ajax finished
};

a();//call a

$.ajax('url')
    .done(function(result){
        //TBD, handle result from server
        b();//call b since data is received
    });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号