javascript - Javascript 问题(异步调用)

标签 javascript jquery

我正在尝试在获取提要之前更改文本。
但是在我收到提要后文本发生了变化。
问题/答案仅适用于 Google Chrome(因为它是一个扩展程序)
抱歉我的英语不好 ;-)

$("h1").click(function(){

    $(this).text("Loading..."); // this happen after fids();
    fids(); // function to get feeds

});

最佳答案

最好将 fids 改为异步工作,但如果你不能那样做,你可以在超时时运行 fids:

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

Try it在 JSFiddle 上。

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

关于javascript - Javascript 问题(异步调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155000/

相关文章:

javascript - Angular 深度嵌套响应式表单 : Cannot find control with path on nested FormArray

javascript - 使用 ResponsiveNav-Plugin 需要帮助

javascript - 验证表单,空字段警告消失,持续约 3 毫秒

javascript - 将带有参数的函数作为参数传递给 jQuery 的回调

javascript - JsViews:数据链接中辅助函数之前的转换器

javascript - 图像上的响应式文本区域( Bootstrap )

javascript - 如何限制页面滚动到内容最少的div?

javascript - 如何保证两个setInterval持续时间相同

javascript - Jquery 日期选择器下拉列表显示当前日期而不是所选日期

javascript - 系列 jquery 调用