我知道有这样的方法:如何让JS等待...?
setTimeout("functionA();",1250);
会延误我的过程,但问题是,在泛函有一定的价值回归。当我使用这种方式,它不能让我回到functionA返回值:
this.sth = setTimeout("functionA();",1250);
我的意思是,this.sth不是我想要的结果。
我知道有这样的方法:如何让JS等待...?
setTimeout("functionA();",1250);
会延误我的过程,但问题是,在泛函有一定的价值回归。当我使用这种方式,它不能让我回到functionA返回值:
this.sth = setTimeout("functionA();",1250);
我的意思是,this.sth不是我想要的结果。
你可以这样做:
setTimeout(functionA(functionB()), 1250);
并定义functionB
为:
function functionB(resultFromA) {
}
和functionA
会是什么样子:
functionA(callback) {
// do something useful
callback(result);
}
你应该做一个functionB(),这是否:
function functionB() {
this.sth = functionA();
// do things with the returned value
}
setTimeout是一个异步操作。这意味着functionA在超时后运行,但脚本的其余部分仍在运行。这是一个常见的错误新的JavaScript程序员认为脚本将导致此暂停。
如果您的目标是让脚本使用while循环或带日期的循环暂停您的最佳状态。但这可能是一个糟糕的主意。停顿的脚本可以为浏览器做出奇怪的事情,包括让整个浏览器在运行时暂停。这包括所有选项卡。这可能不是你想要的。最好的办法就是像Garret所说的那样做,使得操作可以异步执行,但仍能完成你想要的操作。
我已经看到了解决方案使用for循环与数千次/数百万次的迭代。不过要注意的是,如果使用不当,这可能会导致浏览器无法响应。
这似乎更令人困惑,而不仅仅是将返回值设置为一个变量,使用它的好处是什么? – Garrett 2009-09-07 19:46:34