javascript - 如何理解 JavaScript 同步/异步

标签 javascript jquery asynchronous synchronous

前几天,我用 JavaScript 编写了这个函数作为 jQuery 插件对象的简单 DTO。我假设如果我在函数末尾写了一个通用的 return gridColumns 行,那么该数组可能会在 我的 for 循环是完成填充它。所以我在最后写了这个 while (true) 语句,认为我很聪明。

    function getGridColumns() {
        var gridColumns = [];
        var records = $("#jqxGrid").jqxGrid("columns").records;
        for (var i = 0; i < (records.length); i++) {
            var obj = {
                datafield: records[i].datafield,
                width: records[i].width,
                cellsalign: records[i].cellsalign,
                hidden: records[i].hidden
            }
            gridColumns.push(obj);
        }
        while (true) {
            if (gridColumns.length == records.length {
                return gridColumns;
            }
        }
    };

我的一个 friend 看着我的小“hack”说这完全没有必要,我做了一些测试并确定他是对的。

所以,这就是我所在的位置。 JavaScript 是如何异步的,又如何不是?谁能帮助我理解这种范式,以便我可以编写更好的 JavaScript?

最佳答案

产生新的执行“线程”并因此可以说在 javascript 中引入异步情况的最常见机制是 AJAX 调用回调(除非调用是专门同步的)和 setInterval()setTimeout() 调用。正如 Pointy 所指出的,还有更多。

关于javascript - 如何理解 JavaScript 同步/异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083051/

相关文章:

javascript - 在 RxJS 5.x 中使用 from 创建 Observable 的最佳方法?

javascript - 如何隐藏单击后滚动到内容的菜单?

javascript - 组件未在当前 View 中更新

javascript - 显示/隐藏 Div 的多个复选框

ios - 在同步调用中执行异步任务

javascript - AngularJS Controller 缓存在 Firefox 和 IE : how to disable?

来自自定义 jQuery AJAX 函数的 Javascript 回调

javascript - HTML 表格行中第二列的 jQuery 选择器

c# - Backgroundworker 不会在 DoWork 方法中执行 extern dll 函数

javascript - JavaScript 中的异步 foreach