Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript问题(异步调用)_Javascript_Jquery - Fatal编程技术网

Javascript问题(异步调用)

Javascript问题(异步调用),javascript,jquery,Javascript,Jquery,我正在尝试在收到提要之前更改文本。 但在我收到提要后,文本发生了变化。 这个问题/答案只适用于谷歌浏览器,因为它是一个扩展 对不起,我的英语很差- $("h1").click(function(){ $(this).text("Loading..."); // this happen after fids(); fids(); // function to get feeds }); 最好将FID更改为异步工作,但如果无法做到这一点,则可以在超时时间内运行FID: $("h1

我正在尝试在收到提要之前更改文本。 但在我收到提要后,文本发生了变化。 这个问题/答案只适用于谷歌浏览器,因为它是一个扩展 对不起,我的英语很差-

$("h1").click(function(){ $(this).text("Loading..."); // this happen after fids(); fids(); // function to get feeds });
最好将FID更改为异步工作,但如果无法做到这一点,则可以在超时时间内运行FID:

$("h1").click(function(){
    $(this).text("Loading...");
    setTimeout(fids, 0);
});
在JSFiddle上


它不能像以前那样工作的原因是,在所有常见的浏览器中,JavaScript都是在UI线程上运行的。如果更改文本,然后调用阻塞函数,浏览器将等待JavaScript完成运行,然后再更新UI。使用setTimeout可以在浏览器有时间重新绘制文本后,在下一个事件循环中运行它。

最好将FID更改为异步工作,但如果不能这样做,可以在超时时间内运行FID:

$("h1").click(function(){
    $(this).text("Loading...");
    setTimeout(fids, 0);
});
在JSFiddle上


它不能像以前那样工作的原因是,在所有常见的浏览器中,JavaScript都是在UI线程上运行的。如果更改文本,然后调用阻塞函数,浏览器将等待JavaScript完成运行,然后再更新UI。使用setTimeout可以在浏览器有时间重新绘制文本后,在下一个事件循环中运行它。

Right。。但为什么会这样呢?它是有效的。非常感谢。但是如果在这个函数之后我想写$h2.show,我也会遇到同样的问题;例如。有什么建议吗?@Michäel:我不确定我是否理解你的问题。我有一个例子,里面有$h2.show;工作。例如。setTimeOutPids之后,0;我写$this.hide$h2.show;[这发生在我也得到提要之前]h2从css显示中隐藏:无。只有当我得到信息后,我才希望h2是可见的。。但为什么会这样呢?它是有效的。非常感谢。但是如果在这个函数之后我想写$h2.show,我也会遇到同样的问题;例如。有什么建议吗?@Michäel:我不确定我是否理解你的问题。我有一个例子,里面有$h2.show;工作。例如。setTimeOutPids之后,0;我写$this.hide$h2.show;[这发生在我也得到提要之前]h2从css显示中隐藏:无。只有当我得到信息时,我才希望h2可见