是不是可以在javascript中等待?

时间:2017-10-26 14:35:57

标签: javascript events

我有一个包含许多html表单的页面,我需要遍历所有这些表单,提交它们并等待响应,然后获取数据。

自然要做的就是写一个这样的循环:

for (i = 0; i < win.document.forms.length; i++)
{
    // Submit form i and wait for the response
}

然后问题就出现了:你如何在循环中等待响应?您可以检查数据是否可用,如果没有?你怎么在循环中消磨时间? js中没有睡眠功能,对吧?

要在循环中运行并且始终检查数据会占用所有系统资源。你也做不到。我目前的智慧是你需要退出循环并终止,但安排包含函数以便稍后执行。当函数稍后运行时,您必须在停止的位置重新进入循环,并再次检查可用数据。

至少可以说是尴尬。我错过了什么吗?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以使用带回调的ajax异步调用,这样就不会阻塞线程。

$("form").each(function (index, element) {
    var form = $(element);

    $.ajax({
        url: form.attr('action'),
        type: 'POST',
        data: form.serialize(),
        success: function (result) {
            // ... Process the result ...
        }
    });
});

如果你想使用for循环,那么你还需要创建外部函数,因为在该循环中定义的变量不会有词法范围,所以你最终可能会多次提交相同的表单。