3

我正在开发一个带有add_record方法的 jQuery 插件(见下文)。如果您查看函数定义,则有两个$.each循环将值附加到 plugin.payload。

现在,一切正常。但是,如果记录或选项真的很大怎么办?$.each()在发出传输调用之前我是否需要担心未完成?

如果是这样,解决该问题的最佳方法是什么?

plugin.add_record = function (records, options, callback) {
    if (typeof (options) == "function") {
        callback = options;
        options = undefined;
    }
    if (options) {
        $.each(options, function (index, value) {
            plugin.payload.append($(value));
        });
    }
    $.each(records, function (index, value) {
        plugin.payload.append($(value));
    });
    transmit('API_AddRecord', plugin.payload, 'db', function (data) {
        return typeof (callback) == "function" ? callback(data) : data;
    });
}
4

2 回答 2

7

$.each是同步的,所以不用担心调用不会完成。唯一遇到麻烦的情况是在循环内启动异步操作(如 ajax 调用)。

于 2013-09-13T00:22:20.617 回答
1

不用担心,因为$.each.append()是同步函数。

在语句的同步执行中,只有在完成一个语句后才会移动到下一个语句。

只有当您在循环内执行一些异步操作(例如 ajax 请求/动画等)时,唯一的问题才会出现,而在这种情况下您没有这样做

于 2013-09-13T00:20:53.697 回答