Javascript 安格拉斯。执行长时间运行的任务
AngularJS是否有执行长时间运行任务的机制?例如,GWT具有如下特性: 有时,您希望打破逻辑循环,以便JavaScript 事件循环有机会在两段代码之间运行。这个 GWT中的调度程序类将允许您这样做。你的逻辑 控制完成后,传递给调度程序将在将来的某个时间点运行 已返回到JavaScript事件循环。这个小小的耽搁可能会 给接口一个机会来处理一些用户事件或初始化 其他代码Javascript 安格拉斯。执行长时间运行的任务,javascript,angularjs,Javascript,Angularjs,AngularJS是否有执行长时间运行任务的机制?例如,GWT具有如下特性: 有时,您希望打破逻辑循环,以便JavaScript 事件循环有机会在两段代码之间运行。这个 GWT中的调度程序类将允许您这样做。你的逻辑 控制完成后,传递给调度程序将在将来的某个时间点运行 已返回到JavaScript事件循环。这个小小的耽搁可能会 给接口一个机会来处理一些用户事件或初始化 其他代码 在JavaScript中,可以通过强制异步执行代码来实现这一点: setTimeout(function () {
在JavaScript中,可以通过强制异步执行代码来实现这一点:
setTimeout(function () {
// ... code executed at some later point in time
}, 0); // timeout of `0` means it will get executed as soon as possible
在AngularJS中,您可以使用$timeout
服务来实现这一点,然后可以在单元测试中轻松模拟该服务
给你一个完整的例子:
var maxIterations = 100000;
(function brokenUpFn (i) {
if (i >= maxIterations) {
return;
}
do {
// ... (some computation-intensive code here)
i++;
} while (i % 100);
setTimeout(brokenUpFn, 0, i);
})(0);
在JavaScript中,可以通过强制异步执行代码来实现这一点:
setTimeout(function () {
// ... code executed at some later point in time
}, 0); // timeout of `0` means it will get executed as soon as possible
在AngularJS中,您可以使用$timeout
服务来实现这一点,然后可以在单元测试中轻松模拟该服务
给你一个完整的例子:
var maxIterations = 100000;
(function brokenUpFn (i) {
if (i >= maxIterations) {
return;
}
do {
// ... (some computation-intensive code here)
i++;
} while (i % 100);
setTimeout(brokenUpFn, 0, i);
})(0);
JavaScript在历史上有一个重要的限制:它的所有执行过程都保留在一个唯一的线程中 您可以尝试使用
setTimeout()
和setInterval()
方法模拟并行任务。由于XMLHttpRequest
对象避免了从远程服务器加载资源时冻结UI,因此HTTP请求也可以以异步方式完成
API定义了一种在后台运行脚本的方法。然后,您可以在主页之外的线程中执行一些任务
看看这个和这个
请注意,历史上只有新浏览器使用此功能时,JavaScript才会受到一个重要的限制:它的所有执行过程都保留在一个唯一的线程中 您可以尝试使用
setTimeout()
和setInterval()
方法模拟并行任务。由于XMLHttpRequest
对象避免了从远程服务器加载资源时冻结UI,因此HTTP请求也可以以异步方式完成
API定义了一种在后台运行脚本的方法。然后,您可以在主页之外的线程中执行一些任务
看看这个和这个
请注意,只有新浏览器才能使用此功能