如何将异步请求同步化 急求!!

时间:2021-12-02 03:26:59
     wx.config(data);

            wx.ready(function () {
                wx.onMenuShareTimeline({
                    title: base64decodeToStr(_title),
                    link: _link,
                    imgUrl: _imgUrl,
                    success: function (res) {
                        closeLayer();
                        if (_isShareNext == "0") {
                            userShare();
                        }
                        else {
                            shareLayer();
                        }
                        //window.location.href = _link;
                    }

                }
             );

在调用微信分享功能的时候存在这样一个问题 注册分享按钮的事件需要先调 wx.config方法发送请求去微信服务器那边验证,然后再回调函数中注册事件,但是现在的问题就是有些客户网速较慢 在这个异步请求还没走回调的时候,就去点击微信分享所以我想将异步请求同步化但是这段代码实现不了这个功能

<script src="~/script/jquery-1.11.3.min.js"></script>
<script>
    var flag = false;
    $.ajax({
        type: "post",
        url: "../Home/IndexAjax",
        async: false,
        success: function (obj) {
            alert(obj);
            flag = true;
        }

    });

</script>
<script>
    while (flag == false) {
      
    }

</script>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>


道理我懂js事单线程的可是有没有什么办法让异步请求同步化呢 急求

4 个解决方案

#1


async:false

#2


引用 1 楼 sinat_31535993 的回复:
async:false

微信的接口 查遍了文档没有 同步调用的方式

#3


最好还是不要用同步的,在网速较慢时,同步请求会让浏览器页面进入假死的无响应状态,对用户的体检更不好。

你应该是在异步请求前禁止用户点击微信分享,并且在页面上给用户个提示,当请求完成后再隐藏提示和解除禁止点击。

#4


控制不了。。微信右上角那个分享是不理会api是否加载完毕的,微信也不提供同步加载功能

#1


async:false

#2


引用 1 楼 sinat_31535993 的回复:
async:false

微信的接口 查遍了文档没有 同步调用的方式

#3


最好还是不要用同步的,在网速较慢时,同步请求会让浏览器页面进入假死的无响应状态,对用户的体检更不好。

你应该是在异步请求前禁止用户点击微信分享,并且在页面上给用户个提示,当请求完成后再隐藏提示和解除禁止点击。

#4


控制不了。。微信右上角那个分享是不理会api是否加载完毕的,微信也不提供同步加载功能