是否可以使用async:false如果要求小数据?

时间:2014-06-29 14:55:56

标签: javascript ajax asp.net-mvc

我主要是要求知道从服务器获取小数据的最佳做法是什么。

就像一个例子,我正在使用ajax(或sjax。lol)调用来检查用户是否有新的通知

    function checkNewNotifs() {
        $.ajax({
            url: '/Home/CheckNewNotifications',
            async: false,
            success: function (data) {
                if (data == 'True') {
                    $('#alert-icon').css('color', '#FF4136');
                }
            }
        })
    }

它完成了工作,但我在想是否有更好的方法来实现这一目标?

我目前主要使用ASP.NET MVC 4/5来提供上下文。


修改 对于像我这样的未来ajax初学者读者,实现与此类似的东西的正确方法是通过.done()我还没有完全掌握ajax的想法,但通过以下调用可以做很多事情:

    function checkNewNotifs() {
        $.when(
            $.ajax({
                url: '/Home/CheckNewNotifications',
                success: function (data) {
                    //do data manipulation and stuff.
                }
            })).done(function() {
                //append to view
            })
    }

tl; dr async:false = bad

1 个答案:

答案 0 :(得分:0)

你应该避免同步请求**的主要原因是用户界面

您有使用同步请求的原因吗?

我认为您应该使用异步请求检查通知,因为如果请求的时间比您预期的要多一些 - 用户将看不到任何冻结的UI。

特别是对于网络连接速度较慢或与服务器连接速度较慢的用户(不同国家或不同大陆的事件),此问题将是实际的。