等待executeQueryAsync准备好的JavaScript函数?

时间:2015-09-24 14:23:01

标签: javascript asynchronous sharepoint-2013 csom executequery

是否有可能延迟一些?我在while循环中调用一个函数。此函数调用executeQueryAsync,它必须在循环继续之前完成。当我使用警报时,我的代码可以正常工作,但没有。但

int main() {
    A a(100), b(100); // Ok, a and b will leave as long as main
    auto q = tuple<A&, A&>(a, b);  // ok, q contains references to a and b
    ...
    return 0; // Ok, q, a and b will be destroyed
}

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是以反映异步操作目的的方式对方法进行编码。您似乎正在尝试解决ExecuteQueryAsync并尝试“使”它同步。

这是一个类似的例子 - 见第二个答案:( https://sharepoint.stackexchange.com/questions/95907/executequeryasync-in-for-loop)基本上你a)写内联回调函数,b)你把循环放在成功回调中。

(在线编写“成功”回调函数的好处是成功回调函数然后可以访问方法中的所有变量。它是一个闭包)。

答案 1 :(得分:0)

如果需要遍历一系列异步作业,可以执行以下操作:

var reports = [11, 12, 14, 15];
function doTheReport() {
    if (reports.length === 0) {
        alert('All reports are done now.');
        return;
    }

    var report_Id = reports.pop();
    $.ajax({
        url: "/DoTheReport",
        complete: function () {
            doTheReport();
        }
    });
};