Javascript 如何使while循环真正异步
我正在从事一个javascript客户端项目,该项目执行一些繁重的计算,同时需要对用户友好。这当然意味着异步功能,但也允许用户在计算机执行繁重任务时做一些事情 将此作为异步UOS循环的一个示例:Javascript 如何使while循环真正异步,javascript,asynchronous,localforage,Javascript,Asynchronous,Localforage,我正在从事一个javascript客户端项目,该项目执行一些繁重的计算,同时需要对用户友好。这当然意味着异步功能,但也允许用户在计算机执行繁重任务时做一些事情 将此作为异步UOS循环的一个示例: function async_operation(){ function do_stuff(){ var i=0; while(i<1000000000){ ... //do some stuff (to be more speci
function async_operation(){
function do_stuff(){
var i=0;
while(i<1000000000){
... //do some stuff (to be more specific: localforage.setItem)
++i;
}
}
setTimeout(do_stuff, 0);
//do next opearions...
}
函数异步_操作(){
函数do_stuff(){
var i=0;
while(i用递归函数替换while循环
使用setTimeout
调用函数的每次迭代
function do_stuff() {
var i = 0;
really_do_stuff();
function really_do_stuff() {
//do some stuff (to be more specific: localforage.setItem)
++i;
if (i < 1000000000) {
setTimeout(really_do_stuff, 1);
} else {
//do next opearions...
}
}
}
函数do_stuff(){
var i=0;
真的吗;
函数真的做什么{
//做一些事情(更具体地说:localfough.setItem)
++一,;
如果(i<100000000){
setTimeout(真的做什么,1);
}否则{
//下一步行动。。。
}
}
}
您可能希望在really\u do\u stuff
中有一个while循环,这样批处理大小就可以大于1
,因为setTimeout
将引入延迟(从而导致性能损失)。用递归函数替换while循环
使用setTimeout
调用函数的每次迭代
function do_stuff() {
var i = 0;
really_do_stuff();
function really_do_stuff() {
//do some stuff (to be more specific: localforage.setItem)
++i;
if (i < 1000000000) {
setTimeout(really_do_stuff, 1);
} else {
//do next opearions...
}
}
}
函数do_stuff(){
var i=0;
真的吗;
函数真的做什么{
//做一些事情(更具体地说:localfough.setItem)
++一,;
如果(i<100000000){
setTimeout(真的做什么,1);
}否则{
//下一步行动。。。
}
}
}
您可能希望在really\u do\u stuff
中有一个while循环,这样批处理大小就可以大于1
,因为setTimeout
将引入延迟(从而导致性能损失)。用递归函数替换while循环
使用setTimeout
调用函数的每次迭代
function do_stuff() {
var i = 0;
really_do_stuff();
function really_do_stuff() {
//do some stuff (to be more specific: localforage.setItem)
++i;
if (i < 1000000000) {
setTimeout(really_do_stuff, 1);
} else {
//do next opearions...
}
}
}
函数do_stuff(){
var i=0;
真的吗;
函数真的做什么{
//做一些事情(更具体地说:localfough.setItem)
++一,;
如果(i<100000000){
setTimeout(真的做什么,1);
}否则{
//下一步行动。。。
}
}
}
您可能希望在really\u do\u stuff
中有一个while循环,这样批处理大小就可以大于1
,因为setTimeout
将引入延迟(从而导致性能损失)。用递归函数替换while循环
使用setTimeout
调用函数的每次迭代
function do_stuff() {
var i = 0;
really_do_stuff();
function really_do_stuff() {
//do some stuff (to be more specific: localforage.setItem)
++i;
if (i < 1000000000) {
setTimeout(really_do_stuff, 1);
} else {
//do next opearions...
}
}
}
函数do_stuff(){
var i=0;
真的吗;
函数真的做什么{
//做一些事情(更具体地说:localfough.setItem)
++一,;
如果(i<100000000){
setTimeout(真的做什么,1);
}否则{
//下一步行动。。。
}
}
}
您可能需要在really\u do\u stuff
中使用while循环,这样您的批处理大小就可以大于1
,因为setTimeout
将引入延迟(从而导致性能损失)。看看Web工作人员看看Web工作人员看看Web工作人员看看Web工作人员看看Web工作人员看看Web工作人员看看Web工作人员看看Web工作人员