我知道有这样的方法:
setTimeout("functionA();",1250);
这可以延迟我的进程,但问题是,functionA有一些值可以返回。当我使用这种方式时,它不会让我回到functionA返回值:
this.sth = setTimeout("functionA();",1250);
我的意思是,this.sth不是我想要的结果。
答案 0 :(得分:1)
你应该创建一个函数()来执行此操作:
function functionB() {
this.sth = functionA();
// do things with the returned value
}
答案 1 :(得分:0)
你可以这样做:
setTimeout(functionA(functionB()), 1250);
并将functionB
定义为:
function functionB(resultFromA) {
}
和functionA
看起来像:
functionA(callback) {
// do something useful
callback(result);
}
答案 2 :(得分:0)
setTimeout是一个异步操作。这意味着functionA在超时后运行,但脚本的其余部分仍在运行。这是一个常见的错误,新的javascript程序员认为脚本在导致这种情况时会暂停。
如果您的目标是使用while循环或使用日期循环使脚本暂停更好。这可能是一个坏主意。暂停的脚本可以为浏览器做一些奇怪的事情,包括在运行时使整个浏览器暂停。这包括所有选项卡。这可能不是你想要的。更好的选择是像Garret所提到的那样做,以便操作以异步方式工作,但仍能完成你想要的工作。
答案 3 :(得分:0)
我已经看到使用具有数千/数百万次迭代的for循环的解决方案。但是请注意,如果使用不当,这可能会使浏览器无响应。