是否有可能延迟一些?我在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
}
答案 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();
}
});
};